2009-11-26 2 views
4

Я борюсь с MVC - что я люблю - и это его функции. Я пытаюсь загрузить меню в событии Application_Start. Я хочу загрузить некоторые ссылки с правильным URL (имя контроллера/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 на вашем MasterPage, что указывает на действие, которое кэшируется, или что-то в этом роде.

+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 –

Смежные вопросы