#c# #asp.net #asp.net-core #asp.net-core-mvc #modularity
#c# #asp.net #asp.net-core #asp.net-core-mvc #модульность
Вопрос:
Я настраиваю архитектуру, подобную модульному программированию, Но я хотел бы вернуть представление из одного проекта в другой проект.
Я пробовал использовать коды, которые я нашел в,
- https://www.codeproject.com/Articles/1109475/Modular-Web-Application-with-ASP-NET-Core
- 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 );
}
модель передачи должна быть такой же.