2011-08-05 15 views
0

こんにちは、ビューオブジェクトが設定されていても選択ボックスが設定されていませんか?

私は数日前にこの問題に助けを得た:

Strange problem with ASP.NET MVC DropDownFor

を私が働いてしまったが、今私が同じでまねた問題にrunnedしているソリューションビューとアクション。

私がメインビューにロードされた部分図で、以下しまったこの時間:

<%: Html.DropDownListFor(model => model.ST1, Model.ShowAdTypeList1, new { @class = "dd2", @style = "width:80px;" })%> 

これは、このようにレンダリングされます。

<select name="ALS.ST1" id="ALS_ST1"> 
<option value="0">Alla</option> 
<option value="1">Privata</option> 
<option value="2">Företag</option> 
</select> 

私は、次のコードを持っていますアクションの終了

data.ALS.ST1 = 2; 
    ModelState.Clear(); 
    return View(data); 

問題は、ドロップダウンは常に0を選択しているということですか?ドロップダウンで値2を手動で選択すると、アクションに入るときにdata.ALS.ST1が2に設定されます。

なぜドロップダウンを値2に設定しないのですか?

EDIT1:

これは、ページ全体にALS_ST1で動作するJavaScriptのみである:Model.ShowAdTypeList1はタイプのである

$('#ALS_ST1').change(function() { 
      if (IsNotDblClick(this.id)) { 
       document.forms['list_ad'].submit(); 
      } 
      else 
       return false; 
     }); 

EDIT2 SelectListと選択肢がありません。 DropDownForeは、ST1値をselectedに設定するのに適しています。 http://weblogs.asp.net/rashid/archive/2009/11/27/extending-asp-net-mvc-2-templates.aspx

EDIT3

嘆願は、この部分図は実際にはテンプレートであることに注意してください。

+4

タイトルは、読者の何も伝えていないこと。 –

+0

バインドする前に値を設定しますか? –

+0

@Diodeus> Fixed – Banshee

答えて

1

は次のようにドロップダウンリストをレンダリングしてみてください。

<%= Html.DropDownListFor(
    x => x.ST1, 
    new SelectList(Model.ShowAdTypeList1, "Value", "Text", Model.ST1), 
    new { @class = "dd2", @style = "width:80px;" } 
) %> 

これはShowAdTypeList1プロパティはIEnumerable<SelectListItem>であることを前提としています。そうでない場合は、ValueText引数を調整する必要があります。

はまた、代わりに全体にModelStateをクリアすると、私はあなたがあなたのPOSTアクション内で変更されているプロパティのみをリセット推薦:

ModelState.Remove("ALS.ST1"); 
data.ALS.ST1 = 2; 
return View(data); 
+0

ありがとう!それは動作しますが、なぜですか?なぜModelStateをクリアしないのですか? – Banshee

関連する問題