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

问题描述 投票:0回答:2

我正在建立像模块化编程这样的架构,但我想将视图从一个项目返回到另一个项目。

我曾尝试使用我发现的代码,

  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

我需要一些类似的东西,如何将View从Module1重定向/返回到Module2的Page的视图。在.net核心应用程序中是可能的。我正在使用.net核心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 );
        }

我们怎样才能做到这一点?或者还有其他方法吗?任何帮助都很感激。

c# asp.net asp.net-core asp.net-core-mvc modularity
2个回答
1
投票

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

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

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


0
投票

将子项目添加为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 );
    }

然后从Web Application Module1添加为项目引用或程序集引用。

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

传球模式应该是一样的。

© www.soinside.com 2019 - 2024. All rights reserved.