我有一個相對路徑:獲取相對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