Asp.net mvc 3 使用ajax调用主控制器操作

Asp.net mvc 3 使用ajax调用主控制器操作,asp.net-mvc-3,Asp.net Mvc 3,我的主控制器中有一个响应url“/”的“索引”操作。该操作还有一个可选的“id”参数 [HttpGet] public ViewResultBase Index(int id = -1) { .... } 这个的路由是 routes.MapRoute("Home", "", new { controller = "Home", action = "Index", id = -1 } ); 如果我尝试使用ajax调用此

我的主控制器中有一个响应url“/”的“索引”操作。该操作还有一个可选的“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) {
        });
调用失败,因为url为/?id=20

是否可以强制Url.Action包含控制器和操作名称,就像我这样做

“@Url.Action(“索引”、“主页”)”+“主页/索引”


一切正常,还是我需要纠正我的路线?

你不需要像这样为你的行动方法制定特殊路线。默认路线:

 {controller}/{action}/{id}, 
 new { controller = "Home", action = "Index", id = UrlParameter.Optional }
已经处理了那个案子;当您在服务器上请求“/”时,您应该被发送到
Home/Index
操作方法。您应该删除指定的自定义路由,并让默认路由将您发送到正确的目的地