ASP.NET MVC3 Root-относительный путь к виртуальному пути в контроллере или модели - PullRequest
4 голосов
/ 20 января 2012

Это звучит как достаточно простой вопрос, но я не могу найти ответ на мою жизнь.Как преобразовать относительный корень URL (~/my/path) в виртуальный путь (/mywebsite/my/path) в контроллере и / или модели?

В представлении это достаточно просто сделать, просто позвоните @Url.Content("~/my/path/").И получить физический путь в контроллере так же просто, используя Server.MapPath("~/my/path").Но я не могу понять, как получить виртуальный путь в контроллере.

Моя главная проблема заключается в том, что у меня есть относительный путь к корню изображения, которое я буду передавать в объект JSON, который будетвернулся.В большинстве случаев это будет прочитано javascript и где-то размещено на странице, и я не могу использовать @Url.Content в своем коде javascript.Кроме того, в некоторых случаях этот объект JSON будет использоваться внешним приложением, которое не поймет, что означает ~.

1 Ответ

6 голосов
/ 20 января 2012

В контроллере вы можете использовать свойство Url :

public ActionResult Foo()
{
    string url = Url.Content("~/my/path");
    ...
}

В модели вы не делаете ничего подобного. Модель не должна ничего знать о генерации URL. Это просто не его ответственность. Если ему нужно работать с URL-адресом, этот URL-адрес должен быть передан ему слоями вашего приложения, которые имеют дело с URL-адресами (то есть слоями, имеющими доступ к HttpContext).

...