【问题标题】:Make three-part route url for controller in ASP.NET MVC3在 ASP.NET MVC3 中为控制器制作三部分路由 url
【发布时间】:2011-04-25 12:26:17
【问题描述】:

我正在使用 ASP.NET MVC3,并且很好奇如何将 /Account/Ajax/Action 之类的路由映射到控制器 AccountAjaxController 方法 Action

有什么办法吗?

已经使用 Global.asax.cs 文件中的以下代码解决了问题:

        routes.MapRoute(
            "Default",
            "{controller}/{action}/{id}",
            new {controller = "Home", action = "Index", id = UrlParameter.Optional},
            new[] {"MyProjectName.FrontEnd.Web.Logic.Controllers"}
            );

        routes.MapRoute(
            "Ajax",
            "Ajax/{controller}/{action}/{id}",
            new[] {"MyProjectName.FrontEnd.Web.Logic.Controllers.Ajax"}
            );

【问题讨论】:

    标签: asp.net-mvc-3 routing routes


    【解决方案1】:

    我做到这一点的一种方法是使用 RouteCollection.MapRoute()。见http://msdn.microsoft.com/en-us/library/dd470521.aspx。你可以用路由做各种各样的事情。

    在下面的代码中,我通常会从我的 global.asax.cs Application_Start() 中调用它:

        RouteCollection routes = RouteTable.Routes;
    
        routes.MapRoute(
            "ArbitraryRouteName", // Route name
            "Account/Ajax/Action/", // URL with parameters
            new
            {
                controller = "AccountAjax",
                action = "Action"
            },  // Parameter defaults
            new
            {
            }
        );
    

    有很多方法可以使用它来生成链接。您可以在视图中使用 Html.RouteLink() 作为示例。相信你也可以调用Html.ActionLink("link text", "AccountAjax", "Action")。我认为,如果只有一个路由映射到您的控制器和操作名称,ASP.NET MVC 会自动找出正确的 URL,以从您的路由映射中生成。

    有关 RouteLink 扩展方法的示例,请参阅 http://msdn.microsoft.com/en-us/library/dd492585.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-08
      相关资源
      最近更新 更多