Возможно ли иметь строго типизированный метод GetVirtualPath?
-
05-09-2019 - |
Вопрос
на основе ответа от этот ТАК-пост, я пытаюсь немного настроить его, чтобы мне не нужно было жестко кодировать параметры маршрута и маршрута, а вместо этого (если возможно) использовать строго типизированный метод действия контроллера: -
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 ???
Решение
Короткий ответ – да, можете.Причина, по которой я это знаю, заключается в том, что 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;