我正在为ASP.NET MVC编写一个帮助方法,我需要调用Url.Content
来获取上下文的适当URL。但是,为了创建新的UrlHelper()
,我需要获得当前的RequestContext
(System.Web.Routing.RequestContext
来确切)并且我不确定如何抓住它。有人知道吗?
答案 0 :(得分:46)
如果当前的IHttpHandler是MvcHandler,则可以使用
((MvcHandler)HttpContext.Current.Handler).RequestContext
答案 1 :(得分:19)
注意到这仍然没有答案。从MVC 1.0开始,您可以这样做:
public static string NewHelperMethod(this HtmlHelper helper)
{
UrlHelper url = new UrlHelper(helper.ViewContext.RequestContext);
答案 2 :(得分:3)
你可能在其他地方找到了答案,但是这里可以找到;
在控制器操作中,您可以像这样访问当前的RequestContext:
public ActionResult SomeAction(){
var helper = new UrlHelper(this.ControllerContext.RequestContext);
...
}
答案 3 :(得分:2)
如上所述,只需扩展HtmlHelper,就会以这种方式暴露上下文。例如:
public static string ExtensionMethodName(this HtmlHelper html,object o)
{
html.ViewContext.HttpContext.Request.Uri ... etc
}
答案 4 :(得分:1)
不要创建新的。只需扩展现有的UrlHelper,就像扩展HtmlHelper一样:
public static string IdLink(this UrlHelper helper, Guid id)
{ //...
如果必须同时使用HtmlHelper和UrlHelper,请将其中一个作为常规(非“this”)参数传递。