2009-11-26 77 views
4

我正在苦于MVC--我喜欢它 - 而且它的特性。 我想在Application_Start事件中加载一个菜单。 我想加载一些具有正确url(controllerName/actionName)的链接,但我无法使用Url.Action或其他方法来构建路径。ASP.NET MVC:Application_Start和Url.Action

任何人都可以帮助我吗?

回答

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"); 

我宁愿建议这样做对你的母版一个什么样的RenderAction指向该缓存一个动作,或者类似的东西。

+0

是的,我想要做一些缓存。谢谢。有用。 – LeftyX 2009-11-26 15:28:04

+1

如果有效,请将其标记为已接受的答案。它的stackoverflow是如何工作的! :) – 2009-11-27 09:36:12

+2

注意:集成模式失败:http://blogs.iis.net/mvolo/archive/2007/11/10/Request-is-not-available-in-this-context-exception-in-Application_5F00_Start。 ASPX – 2013-01-29 21:41:43

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 
} 
+2

注意:集成模式失败:http://blogs.iis.net/mvolo/archive/2007/11/10/Request-is-not-available-in-this-context-exception-in-Application_5F00_Start。 aspx – 2013-01-29 21:40:56