我知道我可以使用匿名类型向任何给定助手添加自定义属性,并为其指定属性和值,将其呈现为HTML5属性,但是我希望在给定视图中实现相同的触发器外部指定的助手。类似于您从非突兀的JavaScript帮助程序中获得的相同功能,它在表单字段的属性的上下文中呈现验证规则。
有没有人知道是否有一种“简单”的方式将这些自定义注入帮助程序,还是我需要独立扩展每个帮助程序?
干杯
答案 0 :(得分:1)
你不能从一个集中点扩展所有方法(通过使用额外的'htmlAttributes'参数添加重载来编写将扩展所有html辅助方法的代码 - 可能通过使用IL方法生成,但很难方式)。
每个扩展名都应该是你的html帮助器方法的重载,你可以在例子中实现:
public static class HtmlExtensions
{
public static string MyPager(this HtmlHelper html, string parameter1, int parameter2)
{
var builder = new TagBuilder("div");
GenerateMyPagerBody(builder , parameter1, parameter2); // insert body into tag
return builder.ToString(TagRenderMode.SelfClosing);
}
public static string MyPager(this HtmlHelper html, string parameter1, int parameter2, object htmlAttributes)
{
var builder = new TagBuilder("div");
GenerateMyPagerBody(builder , parameter1, parameter2);
builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
return builder.ToString(TagRenderMode.SelfClosing);
}
}