多个路由,以及动态Asp.net mvc页面

时间:2013-06-10 23:16:55

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

我从数据库中动态获取Url,并通过1个控制器将其传递给多个路由。并且当将url-items的内容体放入View的模型时。 重点是,新页面仅在编译完EDITED项目后开始加载。之前它只显示404页面。

public class DynamicController : MenuController
{
    //
    // GET: /Dynamic/
   s

    public  ActionResult Indexx(string routes) {
        var str = service.Get().Single(x=>x.Url==routes);

        return View(str);
    }


}

路线:

     routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
      /**/  IMenuService<Menu> service = new MenuEntityService();
      foreach (var item in service.Get())
      {
          routes.MapRoute(
          name: item.Url,
          url: item.Url,
          defaults: new { controller = "Dynamic", action = "Indexx",routes=item.Url },
          namespaces: new[] { "MvcApplication1.Controllers" }
          );
      }

2 个答案:

答案 0 :(得分:0)

仅在Application_Start事件中注册路线。此事件仅在您的应用程序的生命周期中发生一次。

因此,需要重新启动应用程序池,以便为已创建的每个动态路径创建路径。 (因此,在重新编译/部署路由后,为什么在App Pool自动重启时)

为了避免每次创建新的动态路径时都需要重新启动应用程序池,更好的选择是创建一个catch all / default路由来处理这些动态页面

//this catches all  requests
routes.MapRoute(
    "Dynamic page route",
    "{*routes}",
     new { controller = "Dynamic", action = "Indexx" } 
);

答案 1 :(得分:0)

我找到了答案:HttpRuntime.UnloadAppDomain();我在我的控制器动作中写了它创建菜单项