我正在尝试使用ASP.net webAPI编写Web应用程序并使用IIS进行淘汰。在这里,我尝试在管理页面(http://localhost/Attendance/Home/Admin
)上启动视图模型。用于获取所有用户的API位于路径http://localhost/Attendance/user
。从浏览器访问时,此URL返回用户。
然而,当我从javascript
下面访问它时 function adminuservm() {
//Properties
self = this;
self.users = ko.observableArray();
self.user = ko.observable();
self.userscount = ko.computed(function () {
if (self.users == null)
return 0;
else
return self.users.length;
}, this);
//Methods
//Get all users
self.getAllUsers = function () {
$.getJSON("api/user", function (data) {
})
.done(function (data) { //success
if(data != null)
self.users = $.map(data, function (u) { return new user(u) });
})
.fail(function (data) { //error
alert("error");
});
};
//call getAllUsers to populate all users
self.getAllUsers();
}
当我给web api资源提供实际路径时,getjson方法没有形成正确的url因此我得到404错误。它调用的URL是http://localhost/Attendance/Home/api/user
。
然后我尝试将该代码放在http://localhost/Attendance/Home/Index
视图上并在那里工作。
我不想在javascript中使用硬编码的URL。有什么出路吗?
提前谢谢。
答案 0 :(得分:1)
您需要将URI更改为/Attendance/api/user
,如下所示:
self.getAllUsers = function () {
$.getJSON("/Attendance/api/user")
.done(function (data) { //success
if (data != null)
self.users = $.map(data, function (u) { return new user()});
})
.fail(function (data) { //error
alert("error");
});
};
同时确保您的WebApiConfig
课程中有如下路线。
config.Routes.MapHttpRoute(
name: "",
routeTemplate: "Attendance/api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);