在ASP.NET MVC中,如何使用C#代码中的Razor @ Url.Content()帮助程序?

JC *_*bbs 52 asp.net asp.net-mvc

我正在尝试编写一个输出图像标记的html帮助扩展.我需要访问(在C#代码中)像Razor的@ Url.Content()帮助器,以获取当前上下文的正确URL.怎么做到这一点?

Sch*_*ime 89

使用以下代码模拟代码中的Url.Content.

VirtualPathUtility.ToAbsolute("~/url/");
Run Code Online (Sandbox Code Playgroud)

  • 如果您的url具有查询字符串参数,则VirtualPathUtility.ToAbsolute()将抛出错误,Url.Content不会. (3认同)

Cur*_*uys 40

您可以UrlHelper通过传入适当的内容来创建自己的实例ViewContext.例如,要从图像助手执行此操作:

public static string CustomImage(this HtmlHelper html)
{
    var Url = new UrlHelper(html.ViewContext.RequestContext);
}
Run Code Online (Sandbox Code Playgroud)

此时你可以打电话Url.Content()或任何其他UrlHelper方法.

  • 在RC1中应该是"var url = new UrlHelper(html.ViewContext.RequestContext);" (6认同)

Dav*_*e K -1

您可以获取 Request 对象,从而获取 URL,如下所示:

string fullUrl = HttpContext.Current.Request.Url.AbsoluteUri;
Run Code Online (Sandbox Code Playgroud)