gpt4 book ai didi

javascript - 在MVC 4中获取相对URL

转载 作者:行者123 更新时间:2023-12-02 14:11:43 25 4
gpt4 key购买 nike

我有一个相对路径:

~/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 Controller 中我尝试过:

Page.ResolveClientUrl("~/Content/themes/base/jquery-ui.min.css");

这也不能满足我的需要。

背景:

我将该 FQ URL 存储到隐藏字段中,然后在 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 发生变化 future 。

那么如何获取相对路径的完全限定 URL?

最佳答案

我不确定您在使用 UriBuilder 时遇到了什么问题,但这是最好的方法:

@{
var uriBuilder = new UriBuilder(Request.Url);
uriBuilder.Path = Url.Content("~/Content/themes/base/jquery-ui.min.css");
}
<input type="hidden" id="siteUrl" value="@uriBuilder.ToString()"/>

您从Request.Url开始,因此您不必对主机进行硬编码。这样,它应该可以在您部署它的任何地方工作。然后更改 Path,但需要使用 Url.Content~ 替换为它应该首先出现的内容。

您可能还想实际添加自己的 UrlHelper 扩展:

public static class UrlHelperExtensions
{
public static string AbsoluteContent(this UrlHelper helper, string contentPath)
{
return new Uri(helper.RequestContext.HttpContext.Request.Url, helper.Content(contentPath)).ToString();
}
}

关于javascript - 在MVC 4中获取相对URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39494265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com