【发布时间】:2012-04-15 15:38:35
【问题描述】:
我有以下名为“DropDown.cshtml”的编辑器模板。 list 部分工作正常,模板使用了一些我从ViewData 获得所需的SelectList 的巫术。控制器将视图模型中的所有选择列表放入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在我的编辑器模板中使用时会忽略属性值,而直接调用时却可以正常工作?
【问题讨论】:
-
@RickAndMSFT,我在该问题或其答案中看不到任何真正适用于此的内容。公认的答案是
DropDownListFor的 lambda 中的模型属性会覆盖选择列表的 selected id。这对我的“lambda 值”仅在我的编辑器模板中被忽略的问题没有帮助,而不是在我的原始 DDL 中。 -
如果
ExpressionHelper.GetExpressionText()(这是帮助程序用来查找属性名称的)不适用于m => Model,我不会感到惊讶。
标签: asp.net-mvc asp.net-mvc-3 mvc-editor-templates