Как вернуть представление в другой проект (модули) в веб-приложении .net Core

#c# #asp.net #asp.net-core #asp.net-core-mvc #modularity

#c# #asp.net #asp.net-core #asp.net-core-mvc #модульность

Вопрос:

Я настраиваю архитектуру, подобную модульному программированию, Но я хотел бы вернуть представление из одного проекта в другой проект.

Я пробовал использовать коды, которые я нашел в,

  1. https://www.codeproject.com/Articles/1109475/Modular-Web-Application-with-ASP-NET-Core
  2. http://www.binaryintellect.net/articles/90d7323f-dcde-40d4-aa30-987bc8db1bf4.aspx

Структура проекта может выглядеть,

 WebApplicaitonModule1
        Controllers
        Views
        Layouts

WebApplicationModule2
        Controllers
        Views
        Layouts

WebApplicationModule3
        Controllers
        Views
        Layouts

WebApplicationModule4
        Controllers
        Views
        Layouts

Models and DAL are different libraries
  

Мне нужно что-то вроде, как перенаправить / вернуть представление из Module1 в представление страницы Module2?. возможно ли это в приложениях .net Core? Я использую .net core 2.1.

Потому что мне нужно получить макет по-другому в модуле.

 My Imaginary scenario,
 - In WebApplicationModule2 we have a action like this and it will return the view.
public IActionResult Index()
        {
            model objmodel = new model();
            return View("~/Home/Index.cshtml",objmodel );
        }

 then after adding Project Dependency, 
 - from WebApplicationModule1

public IActionResult Index()
        {
            model objmodel = new model(); // same model return from another project.
            return View("~/WebApplicationModule2/Home/Index.cshtml",objmodel );
        }

  

Как мы можем достичь этого? или есть какие-то другие способы сделать это? Я ценю любую помощь.

Ответ №1:

Я думаю, вы можете использовать перенаправление для маршрутизации следующим образом. Я не знаю о вашем имени контроллера, поэтому вам нужно передать контроллер, на который вы хотите перенаправить, и модель, которую вы хотите передать в этом методе контроллера

 return RedirectToRoute(new 
{ 
    controller = "", 
    action = "Index", 
    model = model
});
  

Пожалуйста, дайте мне знать, если вам нужна какая-либо помощь. Приветствия

Ответ №2:

Добавьте дочерние проекты в качестве библиотеки классов Razor.

Добавить в качестве ссылки на проект (это будет включать все файлы ссылок, которые использовались в проекте библиотеки классов Razor) или в качестве ссылки на сборку (которая содержит только .dll и view.dll )

и тогда мы сможем легко вызывать представления (лучше, если мы добавим их по области),

 In WebApplicationModule2 we have an action like this and it will return the view.

public IActionResult Index()
    {
        model objmodel = new model();
        return View("~/Home/Index.cshtml",objmodel );
    }
  

Добавьте в качестве ссылки на проект или вспомогательной ссылки затем из WebApplicationModule1.

 public IActionResult Index()
    {
        model objmodel = new model(); // same model return from another project.
        return View("~/WebApplicationModule2/Home/Index.cshtml",objmodel );
    }
  

модель передачи должна быть такой же.