【问题标题】:DropDownListFor selected value not workingDropDownListFor所选值不起作用
【发布时间】: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 你让我意识到我做错了什么。如你所说,我忘记为创作者设置任何价值!
  • 如果绑定到属性,设置SelectListItemSelected 属性是没有意义的。它可以像@Html.DropDownListFor(model =&gt; model.Creator, new SelectList(Model.UserList, "id", "Username")) 一样简单,并删除你第一个sn-p 中的所有代码。

标签: html asp.net-mvc razor html-helper html.dropdownlistfor


【解决方案1】:

SelectList 中设置model.CreatorSelected 的值。

model.Creator = Model.CurrentUser.Id;

最好在你的Controller 中做这些事情,而不是在你的View 中。

【讨论】:

  • 是的,我将所有逻辑/代码移到了 controlle->repository 中。再次感谢
猜你喜欢
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多