【问题标题】:MVC3 DropDownListFor SelectedItem not being selectedMVC3 DropDownListFor SelectedItem 未被选中
【发布时间】:2011-08-27 00:41:08
【问题描述】:

在我的控制器中,我有以下内容(为简洁起见省略了代码):

public ActionResult Edit(string id)
    {
        vw_user u = _respository.getProfile(id);

        var model = new UserProfileEditViewModel
        {
            SL_collegeid = new SelectList(_respository.getColleges(u.State), "id", "college1", u.id)

        };
        return View(model);
    }

现在,当我在返回之前调试模型时,它显示在 SelectList (SL_collegeid) 中选择了特定的大学 (u.id)。但是,当页面加载时,选择的项没有被选中。

这是cshtml的代码:

@Html.DropDownListFor(model=>model.SL_collegeid, Model.SL_collegeid)

有人可以帮我解决这个问题吗?

提前谢谢你, 克里斯

【问题讨论】:

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


    【解决方案1】:

    当控制器方法被调用时,有问题的视图是否没有选择任何内容?如果是这样,模型不会覆盖 ModelState 字典中的内容——因此,即使您更改作为视图支持字段的模型属性,最初发布的数据也会胜过它。同样,如果是这种情况,您可以通过不使用 html 帮助程序并使用 Razor 语法手动设置 HTML 中的值来绕过它。

    【讨论】:

    • 感谢您的快速回复。我对 MVC/Razor 很陌生。话虽如此,我会将这个动作等同于 page_load 事件。但是,当我将有问题的 ddl 更改为 @Html.DropDownList("collegeid",Model.SL_collegeid) 时,它按预期工作。所以我想我的问题是 DropDownListFor 出了什么问题?
    • @Chris - 啊,我想我误解了你原来的问题。在 DropDownListFor 方法中,第一个参数“model.SL_collegeid”是模型中列表中所选项目将绑定到的位置,而第二个参数“Model.SL_collegeid”是选择项目列表本身。在普通的 DropDownList 中,第一个参数是控件名称,第二个参数是列表名称。当您使用 DropDownListFor 时,您的“model.SL_collegeid”是什么类型?那是集合,还是捕获所选 id 的字符串/int 属性?
    • model.SL_collegeid 是集合。所以我想我想将个人资料中的大学 ID 添加到模型中,然后尝试以这种方式捕获它?所以代码看起来像@Html.DropDownListFor(model=>model.id, Model.SL_collegeid - 顺便说一句不起作用。我真的需要处理这个 lambda 东西。
    • @Chris - 在表达式 @Html.DropDownListFor(m => ... ) 中,“m”指的是视图的强类型模型。因此,如果您的模型确实有一个 Id,并且该 Id 是一个字符串(因为 HTML 选择 Id 和 Value 都是字符串),那么您可以像这样绑定到它。尽管我确实认为如果您将模型绑定绑定到 int,模型绑定将为您执行强制转换。
    • 我明白了.... @Html.DropDownListFor(model=>model.SL_collegeid.SelectedValue, Model.SL_collegeid) 有效,现在我有了答案,这很有意义。感谢您的帮助!
    【解决方案2】:

    您必须在语句中返回正确的对象:

    return view(yourObj);
    

    或者你也可以试试:

    @Html.DropDownListFor(model=>model.SL_collegeid,new SelectList(Model.YourDropDownList as System.Collections.IEnumerable,model.SL_collegeid )) 
    

    【讨论】:

      猜你喜欢
      • 2012-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      • 1970-01-01
      相关资源
      最近更新 更多