2008-12-09 66 views
50

我想写一个html助手扩展输出图像标签。 我需要访问(在C#代码中)像Razor的@ Url.Content()帮助器来获取当前上下文的正确URL。 如何做到这一点?在ASP.NET MVC中,我如何使用C#代码中的Razor @ Url.Content()助手?

+1

你需要比“从代码”更具体。这都是代码。你的意思是来自管制员的行动? – liammclennan 2009-01-11 22:43:11

+0

是的,它是免费提供给控制器代码 - 请参阅我的答案下面http://stackoverflow.com/questions/351937/in-asp-net-mvc-how-can-use-i-url-content-from-code/7396627#7396627 – 2011-09-13 03:57:49

+0

为什么不写一个[扩展方法](http://msdn.microsoft.com/zh-cn/library/bb383977.aspx)? – JSC 2008-12-09 08:54:57

回答

-1

你可以请求对象,因此URL是这样的:

string fullUrl = HttpContext.Current.Request.Url.AbsoluteUri; 
2

像这样的事情吧?

public static string MyHelper(this HtmlHelper h) 
{ 
     string url = h.ViewContext.HttpContext.Request.Url.AbsoluteUri; 
} 
38

你可以通过在适当的ViewContext创建自己的UrlHelper实例。例如,从图像帮手做到这一点:

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

在这一点上,你可以调用Url.Content()或任何其他UrlHelper方法。

84

使用以下代码模仿Url.Content。

VirtualPathUtility.ToAbsolute("~/url/"); 
0

是,使用此代码添加url.content到你的代码 它的工作,兄弟和SIST

[示例] VAR img_btn_edit = VirtualPathUtility.ToAbsolute(“〜/内容/图像/笔.PNG“);

2

是的,你可以。

从控制器,你可以拨打:

this.Url.Content("~/Somerelativepath?somethingelse=true");

相关问题