【发布时间】:2010-11-29 10:36:48
【问题描述】:
通常在 ASP.NET 视图中,可以使用以下函数来获取 URL(不是 <a>):
Url.Action("Action", "Controller");
但是,我无法从自定义 HTML 帮助程序中找到如何执行此操作。我有
public class MyCustomHelper
{
public static string ExtensionMethod(this HtmlHelper 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 的实例。一定有更简单的方法。
【问题讨论】:
-
我意识到这是一个简化的示例,但对于显示的示例,我将扩展 UrlHelper 而不是 HtmlHelper。不过,您的真实代码可能两者都需要。
-
对不起,我应该更清楚:我想在扩展方法中做一些 HTML 渲染,我需要为它生成 URL。
标签: asp.net-mvc url html-helper