将模型数据传递给asp.net mvc EditorTemplates

时间:2010-01-17 11:57:32

标签: asp.net-mvc editortemplates

ScottGu在这篇文章link text中展示了如何利用EditorTemplates来处理诸如Country DropDownList之类的事情。我的问题是如何将动态的国家/地区列表传递给EditorTemplate?

4 个答案:

答案 0 :(得分:1)

最优雅的解决方案可能是使用自定义属性,您可以稍后使用以下方法访问模型元数据:ViewData.ModelMetadata。

e.g:

 [Foreign(Type="DropDown", TableName="Countries")]
   public int IdCountry { get; set; }

其中ForeignAttribute是您必须声明的类,稍后使用它来构建编辑器模板。

答案 1 :(得分:1)

更好的是,您可以强制键入部分视图,并将模型传递给EditorFor帮助程序

@Html.EditorFor(m=>m.SelectedCountry, Model.AvailableCountries)

答案 2 :(得分:0)

您可以在ViewData中传递它并从ActionFilter提供ViewData,如果数据经常需要(尽管可以说它是anti-pattern)。

答案 3 :(得分:0)

与@ Benja的回答类似

您也可以以类似的方式使用[AdditionaMetaData(key,value)]属性,而无需定义自己的属性。键和值必须是字符串。

可以在视图中检索额外数据:@ ViewData.ModelMetadata.AdditionalValues [“DropDownData”]