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页面不会自动从ResolveUrl
inheritance的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()。