2011-08-05 60 views
0

嗨,即使設置了視圖對象,選擇框也未設置?

我有幫助,這個問題前兩天:

Strange problem with ASP.NET MVC DropDownFor

的解決方案,我得到了工作,但現在我已經拼命地跑的simular問題相同觀點和行動。

這個時候我被在被加載到主視圖的局部視圖以下:

<%: 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:

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

EDIT2

的Model.ShowAdTypeList1是一個類型的SelectList並沒有選擇。 DropDownFore旨在將ST1值設置爲選中狀態。

EDIT3

普萊斯注意,這部分觀點其實是一個模板:http://weblogs.asp.net/rashid/archive/2009/11/27/extending-asp-net-mvc-2-templates.aspx

+4

這標題告訴讀者NOTHING。 –

+0

那麼你在綁定之前設置了值? –

+0

@Diodeus>固定 – 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

相關問題