使用编辑模板而不使用Html.EditorFor()

时间:2010-03-30 10:56:15

标签: asp.net-mvc

我在编辑模板中有一个日期时间选择器组合,可以像Html.EditorFor(x => x.ETA)一样使用但现在我想在我没有模型的地方使用相同的模板包含DateTime属性。所以我尝试了使用正确模板的Html.Editor(“DateWithTime”,“Arrival”),但没有为ViewData.ModelMetadata.PropertyName赋值,这是我的模板所依赖的。它设置了文本框的id,这显然很重要。

有没有办法渲染模板并为ViewData.ModelMetadata.PropertyName分配一个id值,这样我就可以重复使用模板中的逻辑而不必复制它?

2 个答案:

答案 0 :(得分:1)

可能使用ViewData.TemplateInfo.HtmlFieldPrefix而不是ViewData.ModelMetadata.PropertyName。 我不确定,但我认为HtmlFieldPrefix和PropertyName具有相同的值,只要您不迭代集合。

您可以使用Html.Editor中的htmlFieldName参数修改HtmlFieldPrefix属性。

答案 1 :(得分:0)

您可以在模型中使用UIHint。给它你想要使用的模板的名称

[UIHint("DateWithTime")]

你仍然使用EditorFor。