Вот как я это делаю в модульном тесте:
private string RouteValueDictionaryToUrl(RouteValueDictionary rvd)
{
var context = MvcMockHelpers.FakeHttpContext("~/");
// _routes is a RouteCollection
var vpd = _routes.GetVirtualPath(
new RequestContext(context, _
routes.GetRouteData(context)), rvd);
return vpd.VirtualPath;
}
Per комментарии, я буду адаптироваться к контроллеру:
string path = RouteTable.Routes.GetVirtualPath(
new RequestContext(HttpContext,
RouteTable.Routes.GetRouteData(HttpContext)),
new RouteValueDictionary(
new { controller = "Foo",
action = "Bar" })).VirtualPath;
Replace "Foo" и "Bar" с реальными именами , Это не в моей голове, поэтому я не могу гарантировать, что это наиболее эффективное решение, но оно должно помочь вам на правильном пути.
Мне не нужен URL-адрес текущего запроса, но для некоторых других действий. – 2008-12-12 16:58:55
Я понимаю. Решение выше все еще применяется. Существует нет соединения * с текущим запросом. – 2008-12-12 18:07:36