ASP.NET MVC:Application_Start和Url.Action

Lef*_*tyX 4 asp.net asp.net-mvc url.action

我正在努力与MVC - 我喜欢 - 和它的功能.我正在尝试在Application_Start事件中加载菜单.我想用正确的URL(controllerName/actionName)加载一些链接,但我不能使用Url.Action或其他方法来构建路径.

有谁能够帮我?

Dar*_*rov 5

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
}
Run Code Online (Sandbox Code Playgroud)

  • 注意:在集成模式下失败:http://blogs.iis.net/mvolo/archive/2007/11/10/Request-is-not-available-in-this-context-exception-in-Application_5F00_Start.aspx (2认同)

Joh*_*röm 5

为什么要在application_start中构建菜单?它是否适合某种缓存?无论如何这里..

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

我宁愿建议在你的母版页上做一个RenderAction,指向一个缓存的动作,或类似的东西.

  • 注意:在集成模式下失败:http://blogs.iis.net/mvolo/archive/2007/11/10/Request-is-not-available-in-this-context-exception-in-Application_5F00_Start.aspx (2认同)