我使用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) 如何输出Request.CreateResponse方法的json对象?
下面的代码输出json字符串
"{RowCount:15}"
Run Code Online (Sandbox Code Playgroud)
,字符串不是json ojbect,它应该使用javscript的eval()方法转换为json对象,我希望服务器端直接返回json对象,它应该返回
{RowCount:15}
Run Code Online (Sandbox Code Playgroud)
这是一个json对象.
码
public class PagedDataAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
string jsonRowCount = "{RowCount:10}";
actionExecutedContext.Response = actionExecutedContext.Request.CreateResponse(System.Net.HttpStatusCode.OK, jsonRowCount,System.Net.Http.Formatting.JsonMediaTypeFormatter.DefaultMediaType);
}
}
Run Code Online (Sandbox Code Playgroud)