2009-11-26 5 views
4

저는 MVC와 사랑에 빠져 있습니다. Application_Start 이벤트에서 메뉴를로드하려고합니다. 올바른 URL (controllerName/actionName)을 사용하여 링크를로드하려고하지만 Url.Action 또는 다른 방법을 사용하여 경로를 빌드 할 수 없습니다.ASP.NET MVC : Application_Start and 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"); 

은 차라리 그런 캐시 행동, 또는 무언가를 가리키는 것을 당신의 masterpage에 RenderAction을하고 추천 할 것입니다.

+0

예, 캐싱을하고 싶습니다. 감사. 그것은 작동합니다. – LeftyX

+1

작동하는 경우 수락 된 답변으로 표시하십시오. 그 stackoverflow 작동 방식! :) –

+2

참고 : 통합 모드에서는 실패합니다. http://blogs.iis.net/mvolo/archive/2007/11/10/Request-is-not-available-in-this-context-exception-in-Application_5F00_Start. aspx –

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 –