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

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

它是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" /> 

这应该做你正在寻找…

 System.Web.VirtualPathUtility.ToAbsolute( “〜/”)

这里有很多方法来解决使用该应用程序根操作符( ~ )的path

  • UrlHelper.Content
  • HttpServerUtility.MapPath
  • WebPageExecutingBase.Href
  • VirtualPathUtility.ToAbsolute
  • Control.ResolveUrl

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

一个典型的MVC页面使我们可以通过WebViewPage访问相当多的这些属性。 有没有想过当你键入@ViewData ,你会奇迹般地连接到ViewData? 这是因为你已经击中了你正在使用的MVC页面。

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

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

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

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

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

AFAIK,MVC页面不会自动从ResolveUrlinheritance的System.Web.UI命名空间创build任何实例。 如果出于某种原因,你真的想要使用这种特定的方法,你可以新build一个控件,并使用它公开的方法,但我强烈build议不要这样做

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

这一切都表示,我会build议使用@Url.Content因为它最适合与MVC范例

UrlHelper.Content()Control.ResolveUrl().

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

在Razor v2.0 / ASP.NET MVC 4中,您不需要这样做。

只需在剃刀页面使用“〜”,它就会为你解决。

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

资源

 Server.MapPath() //returna full path 

要么

 url.content() 

尝试使用Server.MapPath()。