我如何创建这样的东西:Html.MyApp.ActionLink()? 感谢。
答案 0 :(得分:7)
你不能这样做。您可以添加到Html类的唯一方法是通过扩展方法。您无法添加“扩展属性”,这是您使用Html.MyApp
所需的内容。你最接近的是Html.MyApp().Method(...)
您最好的选择可能是将它们作为Html的扩展方法包含在内,或者完全创建一个新类(例如。MyAppHtml.Method(...)
或MyApp.Html.Method(...)
)。最近有一篇博客文章专门展示了这些方法的“Html5”课程,但不幸的是我的谷歌技能让我失望了,我找不到它:(
要执行Html.MyApp().ActionLink()
之类的操作,您需要在HtmlHelper
上创建一个扩展方法,该方法使用您的自定义方法返回类的实例:
namespace MyHelper
{
public static class MyHelperStuff
{
// Extension method - adds a MyApp() method to HtmlHelper
public static MyHelpers MyApp(this HtmlHelper helper)
{
return new MyHelpers();
}
}
public class MyHelpers
{
public IHtmlString ActionLink(string blah)
{
// Wrap the html in an MvcHtmlString otherwise it'll be HtmlEncoded and displayed to the user as HTML :(
return new MvcHtmlString(string.Format("<a href=\"#\">{0}</a>", HttpUtility.HtmlEncode(blah)));
}
}
}
注意:您需要在Web.config
中导入此类所在的命名空间,如下所示:
<?xml version="1.0"?>
<configuration>
<system.web.webPages.razor>
<pages>
<namespaces>
<add namespace="MyHelper"/>
</namespaces>
</pages>
</system.web.webPages.razor>
</configuration>