2
我试图使用的SelectList我的意见之一,它只是不正确填充。它获得了适当数量的条目(4),但它们都是System.Web.Mvc.SelectListItem
。我在代码上启动了调试器,发现有一些奇怪的现象。我一定在做错事,但我不太明白。从视图模型我的ASP.NET MVC SelectList有什么问题?
代码:
public SelectList DeviceTypes {get; private set;}
....
var device_types = DataTableHelpers.DeviceTypes();
IEnumerable<SelectListItem> sl = device_types.Select(
dt => new SelectListItem { Selected = (dt.DeviceType == 1),
Text = dt.Description,
Value = dt.DeviceType.ToString() }).ToList();
DeviceTypes = new SelectList(sl);
和代码视图:
<%= Html.DropDownList("Type",Model.DeviceTypes) %>
所以,当我在调试器看看这个,对SL的IEnumerable是越来越正确建立。我可以看到里面的所有4个元素,具有正确的Text和Value属性值。但是,一旦我调用SelectList构造函数,如果我展开它所包含的IEnumerable,则会看到它有4个条目,但其中的所有数据都已丢失。文本设置为System.Web.Mvc.SelectListItem
,和值为null
。
我试着将ToList()
调用更改为ToArray()
,并将其完全删除。这并没有改变行为。
我在这里做错了什么?
没错,这做到了,谢谢。我想我也明白我现在做错了什么。 – 2010-01-17 19:28:26
这是一个老旧的函数式答案,但请**,绝对不要**直接向视图中写入Linq请求!好的做法是声明一个'INT SelectedValue'和模型中的一个'的IEnumerable <> YourEnumerableProperty'属性,然后在控制器填充它,最后用'@ Html.DropDownListFor(M => m.SelectedValue,新的SelectList( Model.YourEnumerableProperty,“价值”,“文本”)'意见是不应该持有逻辑企业。 – AlexB 2017-12-11 21:29:39
视图可以包含逻辑,它只是需要显示逻辑,而不是业务逻辑。 – 2017-12-21 18:50:42