Asp.net mvc 4 ASP.Net MVC4->;如何设置此路由

Asp.net mvc 4 ASP.Net MVC4->;如何设置此路由,asp.net-mvc-4,asp.net-mvc-routing,Asp.net Mvc 4,Asp.net Mvc Routing,我想知道如何在我的MVC4应用程序中设置路由,在这里我可以有一个名为TMZ的控制器,并让它处理所有这些路由: /TMZ/About /TMZ/Webinars /TMZ/News /TMZ/Conferment /TMZ/CustomerCare /TMZ/Marketing/Emails /TMZ/Marketing/Brochures /TMZ/Marketing/Print /TMZ/Marketing/Press /TMZ/Marketing/Presentations /TMZ/Mar

我想知道如何在我的MVC4应用程序中设置路由,在这里我可以有一个名为TMZ的控制器,并让它处理所有这些路由:

/TMZ/About
/TMZ/Webinars
/TMZ/News
/TMZ/Conferment
/TMZ/CustomerCare
/TMZ/Marketing/Emails
/TMZ/Marketing/Brochures
/TMZ/Marketing/Print
/TMZ/Marketing/Press
/TMZ/Marketing/Presentations
/TMZ/Marketing/Graphics
/TMZ/Marketing/OCSRY
/TMZ/Marketing/Resources
/TMZ/Marketing/DesignStandards
/TMZ/Marketing/Videos
/TMZ/Marketing/PromoKits
/TMZ/Faculty/Forms
/TMZ/Faculty/Reports
/TMZ/CE/Guides
/TMZ/CE/Reports
/TMZ/Academy/Papers
/TMZ/Academy/Books
/TMZ/Academy/Promotions
/TMZ/ManualOfOperations
显示代码:

这是我的RouteConfig.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace LicenseeArchive
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute("TMZ",
                   "TMZ/{action}/{subaction}/{id}",
                   new { controller = "TMZ", action = "Index", subaction = UrlParameter.Optional, id = UrlParameter.Optional },
                   null,
                   new[] { "LicenseeArchive.Web.Controllers" });

            routes.MapRoute("Default",
                   "{controller}/{action}/{id}",
                   new { controller = "Home", action = "Index", id = UrlParameter.Optional },
                   null,
                   new[] { "LicenseeArchive.Web.Controllers" });
        }
    }
}
这是我的Global.asax.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;

namespace LicenseeArchive
{

    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            AuthConfig.RegisterAuth();
        }
    }
}
这是我的TMZ控制器:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace LicenseeArchive.Controllers
{
    public class TMZController : Controller
    {
        //
        // GET: /TMZ/

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult About()
        {
            return View();
        }

        public ActionResult Marketing(string subaction)
        {
            string _view = "Index";
            switch (subaction)
            {
                case "Brochures":
                    _view = "Marketing/Brochures";
                    break;                
            }
            return View(_view);
        }
    }
}
下面是我的视图文件夹结构:

Views
    Account
        Login.cshtml
        Manage.cshtml
        Register.cshtml
    Home
        About.cshtml
        Contact.cshtml
        Index.cshtml
    Shared
        _Footer.cshtml
        _Head.cshtml
        _HeaderBlock.cshtml
        _Layout.cshtml
        _LeftAside.cshtml
        _LoginPartial.cshtml
        _TopNav.cshtml
        Error.cshtml
    TMZ
        Academy
            Books.cshtml
            Papers.cshtml
            Promotions.cshtml
        CE
            Guides.cshtml
            Reports.cshtml
        Faculty
            Forms.cshtml
            Reports.cshtml
        Marketing
            Emails.cshtml
            Brochures.cshtml
            Print.cshtml
            Press.cshtml
            Presentations.cshtml
            Graphics.cshtml
            OCSRY.cshtml
            Resources.cshtml
            DesignStandards.cshtml
            Videos.cshtml
            PromoKits.cshtml
        About.cshtml
        Conferment.cshtml
        CustomerCare.cshtml
        News.cshtml
        ManualOfOperations.cshtml
        Webinars.cshtml
    _ViewStart.cshtml
    Web.Config
在本例中,我假设您有一个名为TMZ的控制器,在该控制器中,您设置了所有其他操作,包括营销、学院、教员和CE

但有两件事需要考虑

  • 此路由应在默认路由“如我所说”之前
  • TMZController
    中的操作应该有一个字符串id参数来处理请求。此id将被传递给营销活动的“资源”或学院活动的“书籍”
  • 希望这是清楚的

    在本例中,我假设您有一个名为TMZ的控制器,在该控制器中,您设置了所有其他操作,包括营销、学院、教员和CE

    但有两件事需要考虑

  • 此路由应在默认路由“如我所说”之前
  • TMZController
    中的操作应该有一个字符串id参数来处理请求。此id将被传递给营销活动的“资源”或学院活动的“书籍”
  • 希望这是清楚的

    在本例中,我假设您有一个名为TMZ的控制器,在该控制器中,您设置了所有其他操作,包括营销、学院、教员和CE

    但有两件事需要考虑

  • 此路由应在默认路由“如我所说”之前
  • TMZController
    中的操作应该有一个字符串id参数来处理请求。此id将被传递给营销活动的“资源”或学院活动的“书籍”
  • 希望这是清楚的

    在本例中,我假设您有一个名为TMZ的控制器,在该控制器中,您设置了所有其他操作,包括营销、学院、教员和CE

    但有两件事需要考虑

  • 此路由应在默认路由“如我所说”之前
  • TMZController
    中的操作应该有一个字符串id参数来处理请求。此id将被传递给营销活动的“资源”或学院活动的“书籍”

  • 希望这是清楚的。

    最简单的方法是在
    Global.asax.cs

    routes.MapRoute("Default",
           "{controller}/{action}/{subaction}/{id}",
           new {subaction= UrlParameter.Optional, id = UrlParameter.Optional});
    
    这意味着您也可以在其他控制器中使用相同的url格式。您的TMZController看起来像:

    public class TMZController : Controller
    {
        public ActionResult About()
        {
            return View();
        }
    
        public ActionResult Marketing(string subaction)
        {
            return View();
        }
    }
    

    因为子操作/id都是可选的,所以您可以构造由2、3或4部分组成的URL,只需在操作中提取额外的参数,然后在方法体中根据需要处理它们。

    最简单的方法是在
    Global.asax.cs

    routes.MapRoute("Default",
           "{controller}/{action}/{subaction}/{id}",
           new {subaction= UrlParameter.Optional, id = UrlParameter.Optional});
    
    这意味着您也可以在其他控制器中使用相同的url格式。您的TMZController看起来像:

    public class TMZController : Controller
    {
        public ActionResult About()
        {
            return View();
        }
    
        public ActionResult Marketing(string subaction)
        {
            return View();
        }
    }
    

    因为子操作/id都是可选的,所以您可以构造由2、3或4部分组成的URL,只需在操作中提取额外的参数,然后在方法体中根据需要处理它们。

    最简单的方法是在
    Global.asax.cs

    routes.MapRoute("Default",
           "{controller}/{action}/{subaction}/{id}",
           new {subaction= UrlParameter.Optional, id = UrlParameter.Optional});
    
    这意味着您也可以在其他控制器中使用相同的url格式。您的TMZController看起来像:

    public class TMZController : Controller
    {
        public ActionResult About()
        {
            return View();
        }
    
        public ActionResult Marketing(string subaction)
        {
            return View();
        }
    }
    

    因为子操作/id都是可选的,所以您可以构造由2、3或4部分组成的URL,只需在操作中提取额外的参数,然后在方法体中根据需要处理它们。

    最简单的方法是在
    Global.asax.cs

    routes.MapRoute("Default",
           "{controller}/{action}/{subaction}/{id}",
           new {subaction= UrlParameter.Optional, id = UrlParameter.Optional});
    
    这意味着您也可以在其他控制器中使用相同的url格式。您的TMZController看起来像:

    public class TMZController : Controller
    {
        public ActionResult About()
        {
            return View();
        }
    
        public ActionResult Marketing(string subaction)
        {
            return View();
        }
    }
    

    因为subaction/id都是可选的,所以您可以构造由2、3或4部分组成的URL,只需在操作中提取额外的参数,然后在方法体中根据需要处理它们。

    TMZ应该是站点的根(路由的静态部分)。控制器将是URL的下一部分。第三部分是个人行为。但我也会有家庭和帐户控制器以及邮件控制器。我现在正在阅读有关区域的内容,我认为这可能是解决方案。您应该在默认路线之前添加您的路线。在这里,您在注册所有RoutsMz后添加它,它应该是站点的根目录(路由的静态部分)。控制器将是URL的下一部分。第三部分是个人行为。但我也会有家庭和帐户控制器以及邮件控制器。我现在正在阅读有关区域的内容,我认为这可能是解决方案。您应该在默认路线之前添加您的路线。在这里,您在注册所有RoutsMz后添加它,它应该是站点的根目录(路由的静态部分)。控制器将是URL的下一部分。第三部分是个人行为。但我也会有家庭和帐户控制器以及邮件控制器。我现在正在阅读有关区域的内容,我认为这可能是解决方案。您应该在默认路线之前添加您的路线。在这里,您在注册所有RoutsMz后添加它,它应该是站点的根目录(路由的静态部分)。控制器将是URL的下一部分。第三部分是个人行为。但我也会有家庭和帐户控制器以及邮件控制器。我现在正在阅读有关区域的内容,我认为这可能是解决方案。您应该在默认路线之前添加您的路线。在这里,你在注册所有路线+1后添加它。这是个好主意。这个答案比我的好。我得承认:)谢谢:)公平地说,你的回答可能更有效