如何在mvc3中创建自定义过滤器工具栏html帮助器

时间:2011-11-14 16:43:44

标签: asp.net asp.net-mvc-3 html-helper lambda

我现在已经有一段时间了。我需要创建一个自定义的mvc3 html帮助程序,以便于过滤和管理工具栏管理。

所有帮助者应该看起来像下面这样或类似的东西。我想做的是有一个帮助器,我可以给我工具栏按钮和过滤器字段,它为我生成一个工具栏和过滤器表单。

我无法弄清楚,因为我在asp.net mvc中是一个新手

@Html.Toolbar(x => {
   x.AddFilterButton();
   x.AddButton("Naujas");
   x.AddDropDownList();
   },
   @<text>
   @Html.EditorFor(Model.ListFilter.Name)
   Filter
   ResetFilter
   </text>,
   filterVisible: false)

我怎么能做到这一点?任何帮助都会非常苛刻。非常感谢。

1 个答案:

答案 0 :(得分:2)

这样的事情:

public static class ToolbarExtensions {
    public static Toolbar Toolbar<T>(this HtmlHelper<T> html) {
        return new Toolbar();
    }
}

public class Toolbar : IHtmlString {
    public string ToHtmlString() { /* build your HTML off the state here */ }

    public Toolbar AddButton(string label) {
        /* build up state here */

        return this;
    }
}

关于这个的语法会有点不同,而不是lambda,看起来像这样:

@Html.Toolbar().AddButton("Button 1").AddButton("Button 2")

但您可以轻松地将其更改为使用lambda中的链接对象而不是Toolbar方法调用。

IHtmlString接口告诉ViewEngine在遇到对象时将对象输出为原始HTML。通过在修改对象状态后返回方法中的当前实例来实现链接。