gpt4 book ai didi

javascript - JavaScript 中的 MVC "~"路径

转载 作者:可可西里 更新时间:2023-11-01 01:50:36 27 4
gpt4 key购买 nike

我使用 JavaScript 代码调用 MVC 网络 API。当当前路径为:

http://localhost/myApp/Administrator

但是当当前路径是:

http://localhost/myApp/Administrator/

我得到错误找不到资源。下面是代码:

$.getJSON("api/UserApi",
function (data) {
...
});

我不想在代码中使用绝对 URL,例如:

$.getJSON("http://localhost/myApp/api/UserApi",          
function (data) {
...
});

绝对 URL 确实可以正常工作,但缺乏灵 active 。有没有办法做与下面相同的事情?

$.getJSON("~/api/UserApi",          
function (data) {
...
});

ASP.NET 支持用当前应用程序的根路径替换“~”字符,例如:

http://localhost/myApp

但是,JavaScript 文件不支持“~”字符。我如何完成同样的事情?

JavaScript 在一个独立的文件中,不能使用像 Url.Content 这样的 ASP.NET 语句。有更好的方法吗?

我找到了以下方法。有没有更好的解决方案?:

1) 在.cshtml文件中写入以下代码

<script type="text/javascript"> 
var currentDomain = '@Url.Content("~")';
</script>

2) 从 .js 文件中读取 currentDomain 变量:

$.getJSON(currentDomain + "/api/UserApi",          
function (data) {
...
});

最佳答案

如果您尝试获取指向某个操作的链接,您可以在 View 中定义 JavaScript 变量,该变量将填充 Url.Action:

<script type="text/javascript">
var userApiPath = '@(Url.Action("userApi", "api"))';
</script>

然后在您的 JS 文件中使用此变量:

$.getJSON(userApiPath,          
function (data) {
});

如果你想要你的应用程序的通用路径,你可以这样做:

<script type="text/javascript">
var path = '@(string.Format("{0}://{1}{2}",
Request.Url.Scheme,
Request.Url.Host,
(Request.Url.IsDefaultPort) ? "" : string.Format(":{0}",
Request.Url.Port)))';
</script>

然后在您的 JS 文件中的某处使用此变量。当然,您不必使用 string.Format 来执行此操作,这只是一个示例。

编辑:

您也可以考虑使用 RazorJS .

关于javascript - JavaScript 中的 MVC "~"路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16250190/

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