2012-01-13 17 views
0

私は01-23日の時間帯が設定されたddlを持っています。これは、機器を予約するために使用される形式になっています。時間はDBフィールドに入力されます。この問題は、予約フォームが開かれ、ddlが予約された時刻を表示し、変更されたときにフォームが送信されたときにpostに渡された値が新しい選択された時刻ではなくdbの初期値です。ポストバック後のMVC ddl値

これは基本的なコードです。新しく選択されたddl値がモデルに渡されない理由は何ですか?あなたのビューで

ビュー

<%= Html.DropDownList("ddl_Hour", Model.ddlHour, 
new { @class = "DropDown", style = "width: 40px” })%> 

モデル

private string _ddlHourSelectedValue = "0"; 
public SelectList ddlHour 
     { 
      get 
      { 
       return (new System.Web.Mvc.SelectList(_ddlHour, "intValue", "Text", Convert.ToInt32(_ddlHourSelectedValue))); 
      } 
     } 
public string ddlHourSelectedValue 
     { 
      get 
      { 
       return _ddlHourSelectedValue; 
      } 
      set 
      { 
       _ddlHourSelectedValue = value; 
      } 
     } 



param[6] = new SqlParameter("@Timeslot", ddlHourSelectedValue); 

答えて

1

フィールドは「ddl_Hour」と呼ばれているが、同じ名前を持つモデル内の変数はありますか?そうしないと、MVCフレームワークはモデル内の値を自動的に設定しません。

これについては2通りの方法があります。ポストを受け入れるあなたのコントローラメソッドで

、あなたはパラメータを追加することができます:

FormCollection fc
をメソッドに。このキーと値のペアのコレクションは、あなたがそのようなポストデータのフィールドからの結果を取得できるようになります:

string selectedValue = fc["ddl_Hour"];

それとも、同じ名前の変数が含まれるようにモデルを変更することができますドロップダウンリストが自動的に入力されます。

public string ddl_Hour { get; set; }

その変数からの投稿のドロップダウンリスト選択の結果にアクセスすることができます。

+0

申し訳ありませんが、私のコピーの貼り付けが間違っていました。私はそれを修正しました。 '<%= Html.DropDownList( "ddl_Hour"、Model.ddlHour、 新しい{@class = "ドロップダウン"、スタイル=「幅:40ピクセルモデルでは、問題はこれです変数 公共SelectListのddlHour – user1071017

+1

を持っています"})%>' これは、IDが "ddl_Hour"のアプリケーションにドロップダウンの選択した値をポストします。同じ名前のモデルに文字列変数がないため、自動的に利用できません。変数 'public string ddlHourSelectedValue'の名前を' ddl_Hour'に変更すると、選択した値があなたのモデルに入力されることがわかります –

+0

優れています、今働いています 助けてくれてありがとう – user1071017

関連する問題