我对ASP.NET MVC 5中的api控制器的ajax请求有问题。
我的情况是这样的:
我有一个像这样的api控制器:
[RoutePrefix("api/organizations/{orgId:int}/students")]
class StudentController{
[Route("subjects")]
[HttpGet]
public HttpResponseMessage GetSubjects(int orgId)
{
}
}
在我的.js文件中,我有一个代码用于调用具有指定URL的请求,如下所示:
var baseURL = "api/organizations/" + $("#orgId").val() + "/students";
$.get(baseURL + "/subjects").done(function (subjects) {
$.each(subjects, function (index, val) {
var vm = new SubjectVM();
vm.Id(val.Id);
vm.Name(val.Name);
self.Subjects.push(vm);
});
});
但问题是它不会进入该控制器方法,因为它的网址看起来像http://localhost:10927/students/api/organizations/15/students/subjects
它应该是这样的http://localhost:10927/api/organizations/15/students/subjects所以它会进入。
我感到困惑的是,当我在学生主页中使用这个http://localhost:10927的网址时,一切都很好。它产生的网址是正确的。但是当我在http://localhost:10927/student/create页面上时,它会生成所述网址。
这里有没有人知道发生了什么?希望你能在这里帮助我。
谢谢。
答案 0 :(得分:1)
将您的baseURL
变量改为以正斜杠开头:/
这样做会强制从主机的根目录而不是当前目录构建URL。