【发布时间】:2009-08-28 08:57:35
【问题描述】:
我将为我的应用编写大量帮助程序。
对于他们中的许多人,我不想扩展 HtmlHelper,而是创建另一个帮助程序类,原因有两个:1) 能够编写 Link.Home 和 Icon.Edit 而不是 Html.HomeLink和 Html.IconEdit; 2) 能够轻松区分标准助手和自定义助手以及后者的定义位置。
这可能吗?怎么样?
不建议这样做吗?为什么?
谢谢
【问题讨论】:
标签: asp.net-mvc helpers
我将为我的应用编写大量帮助程序。
对于他们中的许多人,我不想扩展 HtmlHelper,而是创建另一个帮助程序类,原因有两个:1) 能够编写 Link.Home 和 Icon.Edit 而不是 Html.HomeLink和 Html.IconEdit; 2) 能够轻松区分标准助手和自定义助手以及后者的定义位置。
这可能吗?怎么样?
不建议这样做吗?为什么?
谢谢
【问题讨论】:
标签: asp.net-mvc helpers
嗯,“辅助方法”只是扩展方法。如果您希望能够在视图中写入Link.Home,则必须扩展ViewPage 并添加类型为Link 的属性,例如ILink。 ILink 接口本身可能为空。现在你的所有视图都应该继承自MyViewPage,编写辅助方法变得很简单:
public static string Home(this ILink link, string text)
{
// ...
}
【讨论】:
这可以通过继承 HtmlHelper 并调用新类 Link 和 Icon 来实现。
我不推荐它,原因很简单,Html.HomeLink 和 Html.IconEdit 清楚地说明了方法的作用,它以 HomeLink 和编辑图标的形式输出 Html。
【讨论】: