Подтвердить что ты не робот

Вернуть представление из другой области

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

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

4b9b3361

Ответ 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().

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

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