最佳答案
通常在 ASP.NET 视图中,人们可以使用以下函数来获得 URL (而不是 <a>
) :
Url.Action("Action", "Controller");
但是,我不能找到如何从一个自定义的 HTML 帮助程序做到这一点
public class MyCustomHelper
{
public static string ExtensionMethod(this HtmlHelper helper)
{
}
}
Helper 变量具有 Action 和 GenerateLink 方法,但它们生成 <a>
方法。我深入研究了 ASP.NET MVC 的源代码,但是找不到一个简单的方法。
问题是,上面的 Url 是视图类的一个成员,对于它的实例化,它需要一些上下文和路由映射(我不想处理这些,而且我也不应该处理这些)。或者,HtmlHelper 类的实例也有一些上下文,我假设它们是 Url 实例的上下文信息子集的子集(但是我不想处理它)。
总之,我认为这是可能的,但是因为我可以看到所有的方法,包括一些或多或少的内部 ASP.NET 东西的操作,我不知道是否有一个更好的方法。
编辑: 例如,我看到的一种可能性是:
public class MyCustomHelper
{
public static string ExtensionMethod(this HtmlHelper helper)
{
UrlHelper urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
urlHelper.Action("Action", "Controller");
}
}
但这似乎并不正确。我不想自己处理 UrlHelper 的实例。肯定有更简单的办法。