【发布时间】:2015-02-01 12:45:55
【问题描述】:
所以我认为这是(我已将其分解为一个 foreach 以便我可以正确调试它)。根据创建的对象,它看起来不错。我得到 1 项选择了 true 的项目。
@{
var useritems = new List<SelectListItem>();
foreach (var si in Model.UserList)
{
if (Model.CurrentUser.Id.Equals(si.Id))
{
useritems.Add(new SelectListItem { Selected = true, Text = si.Username, Value = si.Id.ToString(CultureInfo.InvariantCulture) });
}
else
{
useritems.Add(new SelectListItem { Text = si.Username, Value = si.Id.ToString(CultureInfo.InvariantCulture) });
}
}
}
我在这里要做的是检查当前(登录)用户并将选择默认设置为他/她。
@Html.DropDownListFor(model => model.Creator, useritems, new { id = "CreatorDDL", })
但是,这不会将 useritems 中的任何对象设置为选中。即使在调试器中,它也显示选择了 1 个项目:true
不知何故,它只显示列表中的第一项。 有任何想法吗?还是我只是累了,错过了一些非常容易的事情?
【问题讨论】:
-
model.Creator中有什么内容?也许你刚刚将选中的Id设置为它? -
Model.Creator 只是我模型中这个视图的一个 int 属性
-
你试过设置吗?我的意思是
model.Creator = Model.CurrentUser.Id -
谢谢@teovankot 你让我意识到我做错了什么。如你所说,我忘记为创作者设置任何价值!
-
如果绑定到属性,设置
SelectListItem的Selected属性是没有意义的。它可以像@Html.DropDownListFor(model => model.Creator, new SelectList(Model.UserList, "id", "Username"))一样简单,并删除你第一个sn-p 中的所有代码。
标签: html asp.net-mvc razor html-helper html.dropdownlistfor