【问题标题】:MVC3 - Group Html Helper ExtensionsMVC3 - 组 Html 助手扩展
【发布时间】:2012-01-13 05:20:28
【问题描述】:

我想对我的 html 助手进行分组,以便我可以在我的视图中写一些简单的东西:

@Html.SubGroup.MyCustomHelper("Hellow World")

代替:

@Html.MyCustomHelper("Hellow World")

看来我无法在我用于所有助手的 HtmlExtensions 类中嵌套静态类。

有什么建议吗?

【问题讨论】:

    标签: c# asp.net-mvc-3 html-helper


    【解决方案1】:

    你不能做@Html.SubGroup.MyCustomHelper("..."),因为没有“扩展属性”这样的东西,你不能控制HtmlHelper静态类。

    但是您可以使用额外的括号作为扩展方法来执行@Html.SubGroup().MyCustomHelper("...")

    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);
        }
    }
    

    【讨论】:

    • 我会很感激这种实现的一个例子
    • 好的,我添加了一个简单(且未经测试!)的示例。
    • 这正是我为我的项目所做的。我有像 Html.UITemplates().TextBox(...) 这样的方法,可以自动添加所有常见的 CSS 类,创建适当的标签,并呈现文本框。它还允许某些常见功能的可链接性:Html.UITemplates().ValidateRequired().MaxLength(50).TextBox(...)。效果很好,我绝对会推荐它!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    相关资源
    最近更新 更多