で相対URLを取得します。私は相対パス持っているMVC 4
~/Content/themes/base/jquery-ui.min.css"
を、私は隠された入力がありますMVCで
<input type="hidden" id="siteUrl" value=""/>
を私は隠しフィールドに、完全修飾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
を使ってみましたが、私のlocalhost上で動作するかもしれませんが、私のIISサーバに公開していないので、これは私のためには機能しません。
<input type="hidden" id="siteUrl" value="@Url.Content("~/Content/themes/base/jquery-ui.min.css")"/>
をそれは私が試した私のMVCコントローラに
と/Content/themes/base/jquery-ui.min.css
を返します:
は私も試してみましたまた、私は必要なものを行いません
Page.ResolveClientUrl("~/Content/themes/base/jquery-ui.min.css");
。
背景:私は、相対URLを使用するときにJSで、それはそれぞれのためにMVCでそれを正しく使用する方法を知っているdoesntの、
は、私は隠しフィールドにそのFQ URLを保存してから、私はJSでそれにアクセスパスの変更をリンクし、それだけでこのような終わりまでに相対的な文字列を鋲: 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
私のlocalhostのURLはhttp://localhost/Content/themes/base/jquery-ui.css
であり、私のサーバーのhttp://server/productName/Content/themes/base/jquery-ui.css
は基本サーバーのURLが将来変更される場合に備えて静的な名前をコードしたくありません。
したがって、相対パスの完全修飾URLを取得するにはどうすればよいですか。
@RoryMcCrossanは 'Server.MapPath'はちょうど私が'のhttpすなわち、完全修飾URLを必要とし、物理パスを返します。 com/productName/Content/...' – Blindsyde
あなたのアプリケーションはprductionで" webapplication "としてデプロイされますが、開発サーバーでは"ウェブサイト "として実行されます(これらはIIS用語です)。違いは、仮想パスSystem.Web.HttpRuntime.AppDomainAppVirtualPath(この場合は "productName")です。 @ Url.Content( "〜/ Content/themes/base/jquery-ui.min.css")を使用すると、必要なときに仮想パス**のみが含まれているので、必要なものにすることができます。 IIS ExpressとローカルIISの両方を展開しようとしなかったので間違っていると思います。ローカルIISにデプロイすると、アプリケーション名が格納されます。 – derloopkat