MVC5 MEF模块路由自定义区域

时间:2018-03-09 08:35:31

标签: c# .net asp.net-mvc-5 routing mef

简介

我使用MVC5有一个Web应用程序应用程序。此应用程序通过MEF加载模块。我的模块插件中有一个名为SysInfoController的控制器。

SysInfoController效果很好,可以通过

联系到
http://localhost/sysinfo/index

期望的行为

我希望在我的插件中找到以前缀

路由的控制器
http://localhost/plugin/sysinfo/index

我的问题

如何在不使用区域的情况下实现所需的行为?

其他信息

  • 在视图中使用http://localhost/plugin/sysinfo/index时,UrlHelper会返回Url.Action("Index", "SysInfo")

来源

我的源代码确实创建了所需的行为。

RouteConfig.cs

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

  routes.MapRoute(
    name: "plugin",
    url: "plugin/{controller}/{action}"
  );

  routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new {controller = "Home", action = "Index", id = UrlParameter.Optional}
  );
}

的Global.asax.cs

public class MvcApplication : KpmCfsHttpApplication
{
  protected void Application_Start()
  {
    AreaRegistration.RegisterAllAreas();
    GlobalConfiguration.Configure(WebApiConfig.Register);

    RegisterModules(); // register MEF modules

    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
  }
}

0 个答案:

没有答案