与Controller中可用的ASP.NET MVC中的Page.ResolveUrl相同的是什么?
答案 0 :(得分:105)
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 (~
)
UrlHelper.Content
HttpServerUtility.MapPath
WebPageExecutingBase.Href
VirtualPathUtility.ToAbsolute
Control.ResolveUrl
要在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().
答案 4 :(得分:0)
您不再需要在Razor v2.0 / ASP.NET MVC 4中执行此操作。
只需使用&#34;〜&#34;在剃刀页面中,它将为您解决。
<link rel="stylesheet" href="~/Content/style.css" type="text/css" />
答案 5 :(得分:-4)
Server.MapPath() //returna full path
或
url.content()
答案 6 :(得分:-6)
尝试使用Server.MapPath()。