我有一个相对路径:获取相对URL在MVC 4
~/Content/themes/base/jquery-ui.min.css"
,我有一个隐藏的输入:
<input type="hidden" id="siteUrl" value=""/>
在MVC我想的完全合格的URL存储到隐藏字段。我曾尝试:
<input type="hidden" id="siteUrl" value="@Url.RequestContext.HttpContext.Request.MapPath("~/Content/themes/base/jquery-ui.min.css")"/>
和
<input type="hidden" id="siteUrl" value="@HttpContext.Current.Request.MapPath("~/Content/themes/base/jquery-ui.min.css")"/>
但这些都返回一个物理路径,我需要的URL。我也尝试使用UriBuilder
但是这对我不起作用,因为虽然它可能在我的本地主机上工作,但它不会在我将它发布到我的IIS服务器时使用。
我也曾尝试:
<input type="hidden" id="siteUrl" value="@Url.Content("~/Content/themes/base/jquery-ui.min.css")"/>
但它返回/Content/themes/base/jquery-ui.min.css
,在我的MVC控制器我想:
Page.ResolveClientUrl("~/Content/themes/base/jquery-ui.min.css");
也没有做什么,我需要。
背景:
我存储FQ网址到隐藏字段,然后访问它的JS,在JS当我使用一个相对URL它不知道如何因为MVC每个正确使用链接路径的变化,它只是大头针上,以这样的结尾相对字符串: http://localhost/~/Content/themes/base/jquery-ui.css
如果我只是删除~/
然后它http://localhost/Content/themes/base/jquery-ui.css
,但是当我点击进入到一个新的链接路径不再好:http://localhost/newLink/Content/themes/base/jquery-ui.css
我的本地主机上的网址是http://localhost/Content/themes/base/jquery-ui.css
并在我的服务器上它的http://server/productName/Content/themes/base/jquery-ui.css
我不想编写一些静态名称,以防将来基本服务器URL发生变化。
那么如何获取相对路径的完全限定URL?
@RoryMcCrossan'Server.MapPath'刚刚返回的物理路径,我需要完全合格的URL即通过'http://域。 COM /产品名称/内容/ ...' – Blindsyde
您的应用程序在prduction中被部署为“webapplication”,而它在开发服务器中作为“网站”运行(这些是IIS术语)。区别在于虚拟路径System.Web.HttpRuntime.AppDomainAppVirtualPath,在本例中为“productName”。使用@ Url.Content(“〜/ Content/themes/base/jquery-ui.min.css”)应该是你需要的,因为它只包含虚拟路径**当你需要时。您认为这是错误的,因为您没有尝试在IIS Express和本地IIS中进行部署。在本地IIS中部署时,将包含应用程序名称。 – derloopkat