對不起,如果這是一個dup,我的搜索什麼都沒有發現。從ASP.net中的枚舉中的下拉列表中選擇的項目MVC
我使用下面的方法來產生下拉的枚舉類型列表中(從這裏升起:http://addinit.com/?q=node/54):
public static string DropDownList(this HtmlHelper helper, string name, Type type, object selected)
{
if (!type.IsEnum)
throw new ArgumentException("Type is not an enum.");
if(selected != null && selected.GetType() != type)
throw new ArgumentException("Selected object is not " + type.ToString());
var enums = new List<SelectListItem>();
foreach (int value in Enum.GetValues(type))
{
var item = new SelectListItem();
item.Value = value.ToString();
item.Text = Enum.GetName(type, value);
if(selected != null)
item.Selected = (int)selected == value;
enums.Add(item);
}
return System.Web.Mvc.Html.SelectExtensions.DropDownList(helper, name, enums, "--Select--");
}
它工作正常,除了一兩件事。如果我給出的下拉列表與我的模型上的屬性名稱相同,則選擇的值設置不正確。含義這個工程:
<%= Html.DropDownList("fam", typeof(EnumFamily), Model.Family)%>
但這並不:
<%= Html.DropDownList("family", typeof(EnumFamily), Model.Family)%>
因爲我想直接傳遞整個對象到控制器方法我張貼到,我會真的喜歡爲模型上的屬性命名下拉列表。當使用「正確」的名稱,下拉列表確實發佈,我似乎無法設置選定的值。
我不認爲這個問題,但我在Mono運行MVC 1 2.6
編輯:我剛剛測試在Windows操作系統上,而我看到了同樣的行爲
我看到了相同的行爲,並通過使用不同的命名下拉列表來解決。 – Nate 2010-06-18 14:59:33