2009-11-26 25 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