sam*_*sam 13 javascript asp.net path relative-path
我使用JavaScript代码来调用MVC Web API.当前路径为:
http://localhost/myApp/Administrator
但是当前路径是:
http://localhost/myApp/Administrator/
我收到了错误The resource cannot be found.以下是代码:
$.getJSON("api/UserApi",
function (data) {
...
});
Run Code Online (Sandbox Code Playgroud)
我不想在代码中使用绝对URL,例如:
$.getJSON("http://localhost/myApp/api/UserApi",
function (data) {
...
});
Run Code Online (Sandbox Code Playgroud)
绝对URL确实可以正常工作,但缺乏灵活性.有没有办法做同样的事情如下?
$.getJSON("~/api/UserApi",
function (data) {
...
});
Run Code Online (Sandbox Code Playgroud)
ASP.NET支持用当前应用程序的根路径替换"〜"字符,例如:
http://localhost/myApp
但是,JavaScript文件中不支持"〜"字符.我如何完成同样的事情?
JavaScript是一个独立的文件,不能使用像ASP.NET这样的ASP.NET语句Url.Content.有没有更好的方法呢?
我找到了以下方法.有没有更好的解决方案?:
1)将以下代码写在.cshtml文件中
<script type="text/javascript">
var currentDomain = '@Url.Content("~")';
</script>
Run Code Online (Sandbox Code Playgroud)
2)currentDomain从.js文件中读取变量:
$.getJSON(currentDomain + "/api/UserApi",
function (data) {
...
});
Run Code Online (Sandbox Code Playgroud)
Kon*_*ina 15
如果您尝试获取某个操作的链接,则可以在视图中定义将填充的JavaScript变量Url.Action:
<script type="text/javascript">
var userApiPath = '@(Url.Action("userApi", "api"))';
</script>
Run Code Online (Sandbox Code Playgroud)
然后在JS文件中使用此变量:
$.getJSON(userApiPath,
function (data) {
});
Run Code Online (Sandbox Code Playgroud)
如果您想要一个应用程序的通用路径,您可以执行以下操作:
<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>
Run Code Online (Sandbox Code Playgroud)
然后在JS文件中的某处使用此变量.当然你不必string.Format用来做这个,这只是一个例子.
编辑:
您也可以考虑使用RazorJS.
@Url.Action
Run Code Online (Sandbox Code Playgroud)
对于 Javascript
@Url.Content
Run Code Online (Sandbox Code Playgroud)
用于 CSS 和 JS 文件添加。
| 归档时间: |
|
| 查看次数: |
11537 次 |
| 最近记录: |