順便說一句,你將無法得到你的模型回來還有你的代碼。 ListBoxFor
(和DropDownListFor
)輔助方法使用該IEnumerable<SelectListItem>
實際呈現其內容,並且您將SelectListItems
的空集合傳遞給該方法。您可以使用這些擴展方法來創建一個IEnumerable<SelectListItem>
任何IEnumerable<string>
:
public static class IEnumerableStringExtensions
{
public static IEnumerable<SelectListItem> ToSelectListItemList(this IEnumerable<string> items)
{
return IEnumerableStringExtensions.ToSelectListItemList(items, new List<string>());
}
public static IEnumerable<SelectListItem> ToSelectListItemList(this IEnumerable<string> items, string selectedValue)
{
return IEnumerableStringExtensions.ToSelectListItemList(items, new List<string>());
}
public static IEnumerable<SelectListItem> ToSelectListItemList(this IEnumerable<string> items, IEnumerable<string> selectedValues)
{
List<SelectListItem> listitems = new List<SelectListItem>(items.Count());
foreach (string s in items)
{
listitems.Add(new SelectListItem()
{
Text = s,
Value = s,
Selected = selectedValues.Contains(s)
});
}
return listitems;
}
}
使用這樣的方法:
<%:Html.ListBoxFor(m => m.PermissionList, Model.PermissionList.ToSelectListItemList(), new { size = 10 })%>
使用樣本項目,我無法從代碼複製你的異常你已經提供了(僅爲null),但至少上面的類將使您的模型返回到服務器(更準確地說是用戶從列表中選擇的值)。