ASP.NET MVC3 Root-относительный путь к виртуальному пути в контроллере или модели
Это звучит как достаточно простой вопрос, но я не могу найти ответ на мою жизнь. Как преобразовать относительный корень URL (~/my/path
) к виртуальному пути (/mywebsite/my/path
) в контроллере и / или модели?
На вид это достаточно просто сделать, просто позвоните @Url.Content("~/my/path/")
, И получить физический путь в контроллере так же просто, используя Server.MapPath("~/my/path")
, Но я не могу понять, как получить виртуальный путь в контроллере.
Моя основная проблема заключается в том, что у меня есть относительный путь к изображению, который я передам объекту JSON, который будет возвращен. В большинстве случаев это будет прочитано javascript и помещено на страницу где-нибудь, и я не могу использовать @Url.Content
в моем коде JavaScript. Кроме того, в некоторых случаях этот объект JSON будет использоваться внешним приложением, которое не поймет, что ~
средства.
1 ответ
В контроллере вы можете использовать свойство Url:
public ActionResult Foo()
{
string url = Url.Content("~/my/path");
...
}
В модели вы не делаете ничего подобного. Модель не должна ничего знать о генерации URL. Это просто не его ответственность. Если ему нужно работать с URL-адресом, этот URL-адрес должен быть передан ему слоями вашего приложения, которые имеют дело с URL-адресами (то есть слоями, которые имеют доступ к HttpContext).