如何将View返回到.net核心Web应用程序中的另一个项目(模块)

时间:2019-04-05 09:08:44

标签: c# asp.net asp.net-core asp.net-core-mvc modularity

我正在建立一种类似于模块化编程的体系结构,但是我想将视图从一个项目返回到另一个项目。

我尝试使用从中找到的代码

  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核心应用程序有可能做到这一点。我正在使用.net core 2.1。

因为我需要在Module明智地获得不同的布局。

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 );
        }

我们如何实现这一目标?还是有其他方法可以做到这一点?任何帮助,谢谢。

2 个答案:

答案 0 :(得分:1)

我认为您可以使用重定向来进行这样的路由。我不知道您的控制器名称,因此您需要传入要重定向的控制器,以及要传入该控制器方法的模型

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

如果您需要任何帮助,请告诉我。干杯

答案 1 :(得分:0)

将子项目添加为Razor类库。

添加为项目参考(将包括Razor类库项目中使用的所有参考文件)或作为程序集参考(仅包含.dll和view.dll)

然后我们可以轻松地调用视图(如果我们按Area明智地添加,则更好),

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 );
    }

传递的模型应该相同。