gpt4 book ai didi

asp.net-mvc - 我的 ASP.NET MVC SelectList 有什么问题?

转载 作者:行者123 更新时间:2023-12-04 06:59:39 25 4
gpt4 key购买 nike

我正在尝试使用我的 View 之一的 SelectList,但它没有正确填充。它获得正确数量的条目 (4),但它们都读取 System.Web.Mvc.SelectListItem .我在代码上启动了调试器,看到一些奇怪的事情发生了。我一定是做错了什么,但我不太明白是什么。

来自 ViewModel 的代码:

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);

和 View 中的代码:
<%= Html.DropDownList("Type",Model.DeviceTypes) %>

因此,当我在调试器中查看此内容时,sl IEnumerable 已正确构建。我可以在那里看到所有 4 个元素,以及正确的 Text 和 Value 属性值。然而,一旦我调用 SelectList 构造函数,如果我展开它包含的 IEnumerable,我会看到它有 4 个条目,但其中的所有数据都已丢失。文本设置为 System.Web.Mvc.SelectListItem ,值为 null .

我试过改变 ToList()调用 ToArray() ,以及完全删除它。那并没有改变行为。

我在这里做错了什么?

最佳答案

编辑:抓紧我的第一个答案。

您应该将 IEnumerable 列表 if items 传递给 View,而不是尝试在 Controller 中构造 Html 项。

Controller 代码:

public IEnumberable<YourModel> DeviceTypes {get; internal set;}
....
DeviceTypes = DataTableHelpers.DeviceTypes();

查看代码:
<%= Html.DropDownList("Type", from dt in Model.DeviceTypes
select new SelectListItem
{
Text = dt.Description,
Value = dt.DeviceType.ToString(),
Selected = dt.DeviceType == 1
}) %>

关于asp.net-mvc - 我的 ASP.NET MVC SelectList 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2082069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com