Вернуть вид из другой области - PullRequest
13 голосов
/ 22 августа 2010

У меня приложение ASP.NET MVC 2 разделено на несколько областей. Одна из них является областью по умолчанию в главном каталоге, а другая - областью Account в каталоге областей. Теперь проблема в том, что мне нужно использовать одно и то же представление в контроллерах обеих этих областей.

Если бы они находились в одной и той же области, я бы просто return View("ViewName"), но что я могу сделать, чтобы вернуть представление из моей области по умолчанию в контроллере из моей Account области? Есть идеи?

Ответы [ 2 ]

28 голосов
/ 22 августа 2010

Вы можете указать относительное расположение представления:

return View("~/Views/YourArea/YourController/YourView.aspx");

Но когда представление разделяется между несколькими областями, я бы порекомендовал вам использовать папку ~/Views/Shared, которая лучше подходит для этой цели.

4 голосов
/ 26 марта 2013

Это старый вопрос, но он все еще актуален в 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().

Это просто, ноудобно, особенно во время разработки, когда путь в вашем Районе может измениться или что-то в этом роде.

Надеюсь, что это кому-нибудь поможет.

...