我正在学习 ASP.NET MVC4 Web API。我想创建一个接收两个参数的新方法
[HttpPost]
public string MarkAsSeen(int objectID, long userID)
我想使用 jquery 来使用它:
$.ajax({
type: "POST",
url: "/api/tutorial/MarkAsSeen",
data: JSON.stringify({ objectID: _obj, profileID: _pid }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
alert(_tutorial + ' seen');
},async: true
});
我的路线是这样配置的
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}"
);
但它只是不起作用:
未找到与请求 URI 'http://local.dev.unation.com/api/tutorial/MarkAsSeen' 匹配的 HTTP 资源。","MessageDetail":"在控制器 'Tutorial' 上找不到与要求。
如果我将路由的模板更改为 api/{controller}/{action}/{objectID}/{profileID} 和 jquery 方法以在 url 上添加此信息:/api/tutorial/MarkAsSeen/ + _obj + / + _pid 它作品。
我不想执行这些更改,因为:
- 我想为所有操作提供一条通用路线(因此它们的参数名称/数量无关紧要)
- 这个 url 附加很丑,我想使用 data 属性
你能告诉我我做错了什么吗?
谢谢!