我想知道从当前上下文中的 Javascript 文件访问 MVC 控制器类中的 ASP.Net Web Api HTTP GET 方法的正确方法是什么。以下代码段位于 document.ready 主体的函数中。
Javascript:
var Id1 = $('#EmployeePrimaryId').val();
var Id2 = $('#EmployeeSecondaryId').val();
var url = "api/employees/getemployeename?Id1=" + Id1 + "?Id2=" + Id2;
$.get(url, function (data) {
$('#EmployeeName').val(data);
});
我目前在 $.get 收到 404 错误,并相信它可能与路由有关。本文中的“扩展示例”:http ://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-and-action-selection解释了在适当时选择查询字符串参数路由已经到位,我不太确定路由模板中是否需要可选的 Id,因为这些示例显示的控制器方法只有一个 Id 的重载,所以我包含了两个路由,但这两个路由都不起作用。此外,控制器类实现了 ApiController 类。
Web API 控制器方法:
[System.Web.Http.HttpGet]
public string GetEmployeeName([FromUri]int Id1, int Id2)
{
var data = _context.Employees
.Where(x => x.EmployeePrimaryId == Id1
&& x.EmployeeSecondaryId == Id2)
.Select(x => x.EmployeeName);
return data;
}
RouteConfig 类:
private static void RegisterApiRoutes(RouteCollection routes)
{
routes.MapHttpRoute(
name: "Employees",
routeTemplate: "api/{controller}/{action}/",
defaults: new { controller = "Employees",
action = "GetEmployeeName",}
);
routes.MapHttpRoute(
name: "Employees",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new
{
controller = "Employees",
action = "GetEmployeeName",
id = RouteParameter.Optional
}
);
我认为该错误与路由配置有关,因为除了 404 通知之外,我没有收到任何构建或 Web 开发人员工具错误。任何帮助将不胜感激。