我的家庭控制器中有一个“索引”动作,它响应了网址“/”。该操作还有一个可选的'id'参数......
[HttpGet]
public ViewResultBase Index(int id = -1)
{
....
}
此路由是......
routes.MapRoute("Home",
"",
new { controller = "Home", action = "Index", id = -1 } );
如果我尝试使用ajax调用此操作...
$.get(
'@Url.Action("Index", "Home")',
{ id: 20 },
function (response) {
});
调用失败,因为网址为/?id = 20
是否可以强制Url.Action包含控制器和操作名称,就像我这样做...
'@ Url.Action(“Index”,“Home”)'+'Home / Index'
一切正常,还是我需要更正路由?
答案 0 :(得分:2)
您不需要像这样为您的Action方法制作特殊路线。默认路线:
{controller}/{action}/{id},
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
处理那个案子;当您在服务器上请求“/”时,您应该收到Home/Index
操作方法。您应该删除您指定的自定义路由,并让默认路由将您发送到正确的目标。