Можно ли иметь строго типизированный метод GetVirtualPath? - PullRequest
0 голосов
/ 24 мая 2009

на основе ответа от этого поста , я пытаюсь немного его настроить, чтобы мне не нужно было жестко задавать маршрут и параметры маршрута, но вместо этого (если возможно) используйте строго типизированный метод действия контроллера: -

string path = RouteTable.Routes.GetVirtualPath(
    new RequestContext(HttpContext,
                       RouteTable.Routes.GetRouteData(HttpContext)),    
                       new RouteValueDictionary(         
                           new 
                           { 
                               controller = "Foo",
                               action = "Bar"
                           })).VirtualPath;

Пространство имен MVC Futures (Microsoft.Web.MVC) имеет возможность строго набирать ActionLink ... поэтому мне было интересно, возможно ли сделать что-то подобное, здесь.

Строго типизированный GetVirtualpath ???

1 Ответ

1 голос
/ 24 мая 2009

Краткий ответ - да, вы можете. Причина, по которой я это знаю, заключается в том, что ActionLink, о котором вы говорите (Futures), имеет перегрузку, которая принимает строго типизированный делегат Action, который преобразует его в RouteValueDictionary для RouteLink. Я не уверен, что вы можете просто использовать ExpressionHelper. Я думаю, что вы можете. Позвольте мне попытаться найти пример ...

РЕДАКТИРОВАТЬ Это может работать:

string path = RouteTable.Routes.GetVirtualPath(
    new RequestContext(HttpContext,
                   RouteTable.Routes.GetRouteData(HttpContext)),    
                   Microsoft.Web.Mvc.Internal.ExpressionHelper.GetRouteValuesFromExpression<YourController>(c=>c.YourAction())).VirtualPath;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...