如何在控制器代码中使用Url.Content(“〜\ stuff \ hi.jpg”)?

时间:2011-03-09 08:58:19

标签: asp.net asp.net-mvc

我需要控制器代码中Url.Content("~\stuff\")的结果

我如何得到这个?

4 个答案:

答案 0 :(得分:37)

在服务代码中(即远离控制器),您可以使用:

string returnUrl = VirtualPathUtility.ToAbsolute("~/stuff/");

mvc1-3公开了System.Web.Mvc中UrlHelper的Url.Content("~/stuff/");,可以在您的控制器代码中轻松使用。

[已编辑] - 在VirtualPathUtility.ToAbsolute("~/stuff/")用法中进行细微区分。

答案 1 :(得分:9)

在控制器操作中,您可以使用Url属性:

public ActionResult Index()
{
    var url = Url.Content("~/stuff/");
    ...
}

在处理相对网址时,请注意/而不是\的使用情况。

答案 2 :(得分:3)

获取磁盘上的物理文件路径:

Server.MapPath("~\stuff\")

控制器还包含一个urlHelper,可用Url,但可能不是您需要的。

您期望的结果是什么?

修改:根据您对FilePath的请求,Url.Content("~\stuff\")应该有效吗?除非你使用一个非常旧的ASP.net MVC,它在控制器上没有Url属性。

答案 3 :(得分:3)

MVC 3在控制器上公开Url属性作为UrlHelper对象

var url = Url.Content("~/stuff/");

我不确定它是否适用于较旧的MVC版本,但如果没有,则可以创建自己的

var urlHelper = new UrlHelper(ControllerContext.RequestContext);
var url = urlHelper.Content("~/stuff/");