Вернуть представление из другой области
У меня есть приложение ASP.NET MVC 2, разделенное на несколько областей. Одна из них - это область по умолчанию в основном каталоге, а другая - область Account
в каталоге Areas. Теперь проблема в том, что мне нужно использовать один и тот же вид в контроллерах из обеих этих областей.
Если бы они были в одной области, я бы просто return View("ViewName")
, но что я могу сделать, чтобы вернуть представление из моей области по умолчанию в контроллере из моей области Account
? Любые идеи?
Ответы
Ответ 1
Вы можете указать относительное расположение представления:
return View("~/Views/YourArea/YourController/YourView.aspx");
Но когда представление разделяется между несколькими областями, я бы рекомендовал вам использовать папку ~/Views/Shared
, которая лучше подходит для этой цели.
Ответ 2
Это старый вопрос, но по-прежнему актуальная проблема в MVC, я думаю, так вот, как я решаю его с помощью СУХОЙ моды, которая позволяет вам легко изменять путь к серверу и автоматически обновлять все ваши зависимые действия:
public class FooController : Controller
{
private ActionResult FooView(string name, string extension = "cshtml") {
return View("~/Areas/Bar/Views/Foo/" + name + "." + extension); }
}
public ActionResult SomeAction(){
return FooView("AreaSpecificViewName");
}
public ActionResult SomeOtherAction(){
return FooView("AnotherAreaSpecificViewName", "aspx");
}
}
Это опрятно, потому что по умолчанию он имеет значение Razor (.cshtml
) Просмотр файлов, но он может быть установлен явно, предоставив второй параметр, как показано в SomeOtherAction()
.
Это просто, но удобно, особенно во время разработки, когда путь вашего Района может измениться или что-то в этом роде.
Надеюсь, что это поможет кому-то.