0
此代碼顯示包含一些選項的下拉框。選項是小數。用戶選擇一個,然後按保存。回發時,應在下拉框中選擇所選的選項。這不是字符串的問題。此代碼使用小數。當回發回來時,沒有選擇任何東西。我認爲ASP.NET MVC由於小數精度而無法匹配。在ASP.NET MVC3中使用帶小數的DropDownList
小數的列表,以在一個下拉框
public static List<decimal> MyCustomFieldOptions
{
get
{
var x = new List<decimal>();
x.Add(0.10m);
x.Add(0.25m);
return x;
}
}
上視圖模型的屬性顯示:
[UIHint("MyCustomField")]
public decimal MyCustomField { get; set; }
在視圖:
@Html.EditorFor(model => model.MyCustomField)
EditorTemplate:
@model decimal
@Html.DropDownListFor(x => x, new SelectList(ProjectNamespace.MyViewModel.MyCustomFieldOptions), new {size="2"})
/Shared/EditorTemplates/MyCustomField.cshtml
該代碼可以正確地顯示有兩個選項可供選擇的列表框。用戶可以選擇一個,按保存並且Controller獲取該值。控制器將會看到0.25
或0.1
。但是,當頁面返回時,該項目不再被選中。
我很確定這是因爲小數精度問題。
@Model.MyCustomField.ToString()
返回0.250
。
注意什麼編輯模板輸出:
<select id="MyCustomField" name="MyCustomField" size="2">
<option>0.10</option>
<option>0.25</option>
</select>
的選項的小數精度是不同的。 0.25
,而不是0.250
所以它可能無法匹配。
我讀了SO article,它給了我創建編輯器模板並查看小數精度的提示。