使用ajax调用home控制器操作

时间:2011-08-24 21:11:43

标签: asp.net-mvc-3

我的家庭控制器中有一个“索引”动作,它响应了网址“/”。该操作还有一个可选的'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'

一切正常,还是我需要更正路由?

1 个答案:

答案 0 :(得分:2)

您不需要像这样为您的Action方法制作特殊路线。默认路线:

 {controller}/{action}/{id}, 
 new { controller = "Home", action = "Index", id = UrlParameter.Optional }

处理那个案子;当您在服务器上请求“/”时,您应该收到Home/Index操作方法。您应该删除您指定的自定义路由,并让默认路由将您发送到正确的目标。