【发布时间】:2023-04-05 23:54:02
【问题描述】:
ScottGu 在这篇帖子link text 中展示了如何将EditorTemplates 用于诸如Country DropDownList 之类的事情。我的问题是如何将国家的动态列表传递给 EditorTemplate?
【问题讨论】:
标签: asp.net-mvc editortemplates
ScottGu 在这篇帖子link text 中展示了如何将EditorTemplates 用于诸如Country DropDownList 之类的事情。我的问题是如何将国家的动态列表传递给 EditorTemplate?
【问题讨论】:
标签: asp.net-mvc editortemplates
最好将局部视图设为强类型并将模型传递给 EditorFor 帮助器
@Html.EditorFor(m=>m.SelectedCountry, Model.AvailableCountries)
【讨论】:
可能最优雅的解决方案是使用自定义属性,您以后可以使用以下方法访问模型元数据:ViewData.ModelMetadata。
例如:
[Foreign(Type="DropDown", TableName="Countries")]
public int IdCountry { get; set; }
ForeignAttribute 是一个你必须声明的类,然后用它来构建你的编辑器模板。
【讨论】:
如果经常需要数据,您可以在 ViewData 中传递它并从 ActionFilter 提供 ViewData(尽管可以说它是 anti-pattern)。
【讨论】:
类似于@Benja 的回答
您也可以以类似的方式使用 [AdditionaMetaData(key,value)] 属性,而无需定义自己的属性。键和值必须是字符串。
可以在视图中检索额外的数据:@ViewData.ModelMetadata.AdditionalValues["DropDownData"]
【讨论】: