在MVC3中创建复合自定义控件

时间:2014-04-03 17:26:13

标签: asp.net-mvc-3

我想在MVC3中创建自定义控件。例如一个控件名称AddressTextFor,它应该采用多个属性,如Street,City,State&国家。有了这些信息,我希望能够像以下一样调用自定义控件:

@Html.AddressTextFor(m=>new {m.Street,m.City,m.State,m.Country},new {@Id='',@class=''})

我尝试了下面的代码,但我不知道如何输入强制转换表达式值以阅读上述属性。

public static MvcHtmlString AddressTextFor"<"TModel,TProperty">"(this HtmlHelper"<"TModel">" helper,Expression<Func"<"TModel,TProperty">">" expression)
{

}

我不想为此提供部分观看。请帮助。

1 个答案:

答案 0 :(得分:0)

实现此目标的最简单方法是使用 EditorTemplates DisplayTemplates

编辑器模板,类似于部分视图,强类型...您可以在其中设置HTML和输入。

此编辑器应位于视图中 - &gt;共享 - &gt; EditorTemplates文件夹。 在您的情况下,编辑器的名称应该是您要处理的类型的名称:YourAddress

然后,你像这样使用它:@Html.EditorFor(Model.Address) //是你的地址类型的地址。

您也可以将其用作:@Html.EditorFor(Model.Address, "OtherEditorName") //这允许您为同一类型设置多个编辑器。

然后,如果要显示地址信息......您可以使用与编辑器相同的逻辑...但是将视图放在DisplayTemplates文件夹中。