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

标签 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)

我怎样才能做到这一点?任何帮助将不胜感激。真的谢谢。

最佳答案

像这样:

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 接口(interface)告诉 ViewEngine 在遇到对象时将对象输出为原始 HTML。链接只是通过在修改对象状态后返回方法中的当前实例来实现。

关于asp.net - 如何在 mvc3 中创建自定义过滤器工具栏 html 帮助器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8124928/

相关文章:

c# - 如何返回 MemoryStream docx 文件 MVC?

.net - ASP.NET MVC Html.ActionLink 结果 URL - 编码方式

asp.net - 从母版页调用 Html.RenderPartial

c# - 文件流文件结尾的字符是什么?

asp.net - 在 asp.net C# Web 应用程序中翻译其他语言的文本

c# - DotNetNuke.Services.Mail.Mail.SendEmail 和 DotNetNuke.Services.Mail.Mail.SendMail 之间的区别

jquery属性控制和按钮点击

c# - 覆盖 SaveChangesAsync

asp.net-mvc-3 - 如何在MVC3中限制FileUpload中的文件类型?

asp.net-mvc - 使用 HtmlHelper.BeginForm() 是如何工作的?