Calling the home controller action using ajax

I have an 'Index' action within my home controller which responds to the url '/'. The action also has an optional 'id' parameter...

[HttpGet]
public ViewResultBase Index(int id = -1)
{
     ....
}

the routing for this is...

routes.MapRoute("Home",
                "",
                 new { controller = "Home", action = "Index", id = -1 } );

If I try to call this action using ajax...

    $.get(
        '@Url.Action("Index", "Home")',
        { id: 20 },
        function (response) {
        });

the call fails as the url is /?id=20

Is it possible to force the Url.Action to include the controller and action names, as when I do this...

'@Url.Action("Index", "Home")' + 'Home/Index'

all works fine, or do I need to correct my routing?


You dont need to make a special route for your Action method like so. The default route:

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

Handles that case already; when you request '/' on your server, you should get sent to your Home/Index action method. You should remove the custom route you have specified and let the default route send you to the correct destination.

链接地址: http://www.djcxy.com/p/49986.html

上一篇: 如何使用MapRoute,使用ActionLink()?

下一篇: 使用ajax调用主控制器操作