为什么DropDownListFor不能识别我的编辑器模板中的选定值?

时间:2012-04-15 15:38:35

标签: asp.net-mvc asp.net-mvc-3 mvc-editor-templates

我有以下编辑器模板'DropDown.cshtml'。 list部分工作正常,模板使用了一些伏都教我从SelectList获得所需的ViewData。控制器将视图模型中的所有选择列表放入ViewData,并且列表方面没有任何问题。

@{
    var list = this.GetModelSelectList();
}
@Html.DropDownListFor(m => Model, list)

我在外键视图模型属性上使用此模板,如下所示:

[Required]
[UIHint("DropDown", "MVC", "SelectListName", "JobLevelSelectList")]
[Display(Name = "Job Level")]
public Guid? JobLevelId { get; set; }

public SelectList JobLevelSelectList { get; set; }

在控制器中,JobLevelId在执行视图之前立即具有正确的值,但在呈现的select元素中没有选择任何项目。或者更确切地说,总是选择选择列表中的第一项。

为什么DropDownListFor在编辑器模板中使用时忽略属性值,但在直接调用时工作正常?

1 个答案:

答案 0 :(得分:3)

不幸的是,这是MVC3中的a known bug(我还没有在MVC 4 Beta中尝试过它,看它是否已修复)。

我使用的工作是在DropDownListFor绑定的集合中相应地手动设置Selected属性,这不是理想的但它有效。