ASP.NET MVC: Application_Start и Url.Action - PullRequest
       11

ASP.NET MVC: Application_Start и Url.Action

4 голосов
/ 26 ноября 2009

Я борюсь с MVC - который я люблю - и его особенностями. Я пытаюсь загрузить меню в событии Application_Start. Я хочу загрузить некоторые ссылки с правильным URL-адресом (controllerName / actionName), но я не могу использовать Url.Action или другие методы для построения пути.

Кто-нибудь может мне помочь?

Ответы [ 2 ]

5 голосов
/ 26 ноября 2009

Почему вы хотите создать свое меню в 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 на главной странице, что указывает на кэшируемое действие или что-то в этом роде.

5 голосов
/ 26 ноября 2009
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
}
...