我在这个问题上挣扎了很长时间了。我需要创建一个自定义的mvc3 html帮助器,以方便过滤器和工具栏管理。
所有的helper应该看起来像下面这样或类似的东西。我想做的是有一个助手,我可以给工具栏按钮和过滤字段,它为我生成一个工具栏和过滤表单。
我只是不能弄清楚,因为我是相当新的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
接口告诉ViewEngine在遇到对象时将其输出为原始HTML。在修改对象状态后,通过在方法中返回当前实例来实现链接。