Asp.net mvc 3 在MVC3中创建复合自定义控件

Asp.net mvc 3 在MVC3中创建复合自定义控件,asp.net-mvc-3,Asp.net Mvc 3,我想在MVC3中创建一个自定义控件。例如,控件名AddressTextFor,其中应包含多个属性,如Street、City、State和Country。有了这些信息,我希望能够调用自定义控件,如: @Html.AddressTextFor(m=>new {m.Street,m.City,m.State,m.Country},new {@Id='',@class=''}) 我尝试了下面的一些代码,但我不知道如何键入cast表达式值来读取上述属性 public static MvcHtmlS

我想在MVC3中创建一个自定义控件。例如,控件名AddressTextFor,其中应包含多个属性,如Street、City、State和Country。有了这些信息,我希望能够调用自定义控件,如:

@Html.AddressTextFor(m=>new {m.Street,m.City,m.State,m.Country},new {@Id='',@class=''})
我尝试了下面的一些代码,但我不知道如何键入cast表达式值来读取上述属性

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

}
public static MvcHtmlString AddressTextFor”“(此HtmlHelper帮助程序,表达式)
{
}

我不想为此使用局部视图。请帮助。

完成此操作的最简单方法是使用编辑模板和显示模板

一个编辑器模板,就像一个局部视图,是强类型的…在这里您可以设置HTML和输入

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

然后,您可以这样使用它:
@Html.EditorFor(Model.Address)
//是YourAddress类型的地址

您还可以将其用作:
@Html.EditorFor(Model.Address,“OtherEditorName”)
//这允许您为同一类型使用多个编辑器


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

您想用
Html.AddressTextFor
显示什么?