0

我从数据库中动态获取 URL,并通过 1 个控制器将其传递给多个路由。当把 url-items 的内容体放到 View 的模型中时。关键是,新页面只有在编译编辑项目后才开始加载。之前它只显示 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" }
          );
      }
4

2 回答 2

0

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

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

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

//this catches all  requests
routes.MapRoute(
    "Dynamic page route",
    "{*routes}",
     new { controller = "Dynamic", action = "Indexx" } 
);
于 2013-06-11T00:32:29.163 回答
0

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

于 2013-06-12T19:37:12.960 回答