2
我想组我的HTML帮助,这样我可以在我看来简单的东西,因为这写:的MVC3 - 组HTML辅助扩展
@Html.SubGroup.MyCustomHelper("Hellow World")
代替:
@Html.MyCustomHelper("Hellow World")
看来,我无法在我为所有帮助者使用的HtmlExtensions类中嵌套静态类。
任何建议?
我想组我的HTML帮助,这样我可以在我看来简单的东西,因为这写:的MVC3 - 组HTML辅助扩展
@Html.SubGroup.MyCustomHelper("Hellow World")
代替:
@Html.MyCustomHelper("Hellow World")
看来,我无法在我为所有帮助者使用的HtmlExtensions类中嵌套静态类。
任何建议?
你不能这样做@Html.SubGroup.MyCustomHelper("...")
,因为没有“扩展属性”这样的东西,并且你不能控制静态类HtmlHelper
。
但你可能做@Html.SubGroup().MyCustomHelper("...")
与作为扩展方法的额外parens。
public static class MyHtmlHelpers
{
public static MyHelpers SubGroup(this HtmlHelper helper)
{
return new MyHelpers(helper);
}
}
public class MyHelpers
{
public HtmlHelper Helper { get; private set; }
public MyHelpers(HtmlHelper helper)
{
this.Helper = helper;
}
public MvcHtmlString MyCustomHelper(string someArgument)
{
return MvcHtmlString.Create(someArgument);
}
}
我将不胜感激这样的实现的一个例子 – Dmitry 2012-01-12 20:21:02
好吧,我添加了一个平凡(未经测试!)的例子。 – 2012-01-12 20:44:06
这正是我为我的项目所做的。我有像'Html.UITemplates()。TextBox(...)'这样的方法,它会自动添加所有常见的CSS类,创建适当的标签并呈现文本框。它还允许某些常用功能的可链接性:'Html.UITemplates()。ValidateRequired()。MaxLength(50).TextBox(...)'。它工作得很好,我肯定会推荐它! – 2012-01-12 20:52:57