什么是ASP.NET MVC中的Page.ResolveUrl?

时间:2010-03-16 08:30:32

标签: asp.net-mvc

与Controller中可用的ASP.NET MVC中的Page.ResolveUrl相同的是什么?

7 个答案:

答案 0 :(得分:105)

Url.Content

ASPX:

<link rel="stylesheet" href="<%= Url.Content("~/Content/style.css") %>" type="text/css" />

剃刀:

<link rel="stylesheet" href="@Url.Content("~/Content/style.css")" type="text/css" />

答案 1 :(得分:39)

这应该做你想要的......

System.Web.VirtualPathUtility.ToAbsolute("~/")

答案 2 :(得分:6)

以下是解决使用application root operator (~)

的路径的一系列方法

要在asp.net页面上调用任何带有内联代码的方法,该方法需要作为当前对象的实例变量公开,或者作为静态/共享方法提供。

典型的MVC页面使我们可以通过WebViewPage访问其中的大部分属性。有没有想过当你输入@ViewData时,你会神奇地连接到ViewData?那是因为你已经点击了你所处的MVC页面所暴露的属性。

因此,要调用这些方法,我们不一定要引用它们所代表的类型,而是引用它们的实例属性。

我们可以调用上面这样的实例方法(分别):

href="@Url.Content("~/index.html")" 
href="@Server.MapPath("~/index.html")" 
href="@Href("~/index.html")" 

我们可以这样做来调用一个不需要实例的共享方法:

href="@VirtualPathUtility.ToAbsolute("~/index.html")"

AFAIK,MVC页面不会自动从System.Web.UI命名空间创建任何实例,ResolveUrl继承该命名空间。如果,出于某种原因,你真的想要使用那种特定的方法,你可以只是新建一个控件并使用它公开的方法,但我会强烈推荐它反对

@Code
    Dim newControl As New System.Web.UI.Control
    Dim resolvedUrl = newControl.ResolveUrl("~/index.html")
End Code
href="@resolvedUrl" 

总而言之,我建议使用@Url.Content因为它最适合MVC范例

答案 3 :(得分:3)

UrlHelper.Content()Control.ResolveUrl().

的作用相同

进一步参考: http://stephenwalther.com/archive/2009/02/18/asp-net-mvc-tip-47-ndash-using-resolveurl-in-an-html.aspx

答案 4 :(得分:0)

您不再需要在Razor v2.0 / ASP.NET MVC 4中执行此操作。

只需使用&#34;〜&#34;在剃刀页面中,它将为您解决。

<link rel="stylesheet" href="~/Content/style.css" type="text/css" />

Source

答案 5 :(得分:-4)

Server.MapPath() //returna full path

url.content()

答案 6 :(得分:-6)

尝试使用Server.MapPath()。