gpt4 book ai didi

c# - 为什么我的 Html.DropDownList 会生成一个包含 "System.Web.Mvc.SelectListItem"字符串的列表?

转载 作者:行者123 更新时间:2023-11-30 20:55:59 26 4
gpt4 key购买 nike

我有以下模型:

public class MyModel {
public int SelectedItemId { get; set; }
public SelectList PossibleItemsList { get; set; }
};

在我的 Controller 中,我执行以下操作:

 var possibleItems = someSource.Select( item => new SelectListItem
{
Text = item.FirstMember,
Value = item.SecondMember
}).AsEnumerable();
var model = new MyModel();
model.SelectedItemId = somevalue;
model.PossibleItemsList = new SelectList(possibleItems, model.SelectedItemId);
return View( model );

在我看来我有这段代码:

@Html.DropDownList("SelectedItemId ", Model.PossibleItemsList )

当代码运行时, Controller 代码似乎工作正常,但 View 有一个下拉列表,其中所有项目都只有“System.Web.Mvc.SelectListItem”文本。

我做错了什么?

最佳答案

您正在使用的构造函数将其第一个参数视为应显示在列表中的对象列表,并对每个对象调用 ToString 以获取相应列表项的文本和值.如果这些对象恰好是 SelectListItem 实例 - 没有区别,它们被同等对待。 SelectListItem.ToString 未定义并调用基本实现,这是该类型的字符串表示形式。这就是您看到 "System.Web.Mvc.SelectListItem" 列表的原因。

在您的情况下,您不需要构造可枚举的 SelectListItem 对象,只需使用 SelectList 的另一个构造函数:

 var model = new MyModel();
model.SelectedItemId = somevalue;
model.PossibleItemsList = new SelectList(
someSource, "FirstMember", "SecondMember", model.SelectedItemId);
return View(model);

关于c# - 为什么我的 Html.DropDownList 会生成一个包含 "System.Web.Mvc.SelectListItem"字符串的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17858510/

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