代码之家  ›  专栏  ›  技术社区  ›  LeftyX

ASP.NET MVC:应用程序启动和url.action

  •  4
  • LeftyX  · 技术社区  · 15 年前

    我正在和MVC(我喜欢的)以及它的特性作斗争。 我正在尝试在应用程序启动事件中加载菜单。 我想用正确的url(controllername/actionname)加载一些链接,但不能使用url.action或其他方法来构建路径。

    有人能帮我吗?

    2 回复  |  直到 9 年前
        1
  •  5
  •   Johan Wikström    15 年前

    为什么要在应用程序“开始”中构建菜单?是为了某种缓存吗?不管怎样,这里……

    RegisterRoutes(RouteTable.Routes);
    var httpContext = new HttpContextWrapper(HttpContext.Current);
    UrlHelper urlHelper = new UrlHelper( new RequestContext(httpContext, new RouteData()));
    var urlToHome = urlHelper.RouteUrl("Home");
    

    我建议您在母版页上执行一个renderAction,它指向一个缓存的操作,或者类似的操作。

        2
  •  5
  •   Darin Dimitrov    15 年前
    protected void Application_Start()
    {
        RegisterRoutes(RouteTable.Routes);
    
        var context = new HttpContextWrapper(HttpContext.Current);
        var routeData = RouteTable.Routes.GetRouteData(context) ?? new RouteData();
        var requestContext = new RequestContext(context, routeData);
        var urlHelper = new UrlHelper(requestContext);
        var url = urlHelper.Action("Home", "Index");
        // TODO: do something with the url
    }