我正在寻找创建一个新的MVC网站,我试图解决的一个关键问题是在公共区域(面向网络)和内部区域之间共享代码。
基本上我们有两个应用程序,一个是用户访问的公共网站,另一个是我们公司内部使用的应用程序,用于查看在公共站点上也可见的一些相同信息。
我希望将它们保留为两个独立的站点(项目),因为我们有不同的人员团队,因为我们想要使用不同的身份验证格式(公共表单,内部Windows表单)。
但是,我们还希望能够在两个站点之间共享一些代码(视图,控制器)。我们如何设置这两个MVC站点,以便一个MVC站点可以引用另一个项目中的视图和/或控制器?
例如,我们将有一个视图,使内部用户能够查看我们的公共站点用户的交易历史记录。如果我们在内部站点中创建了该控制器/视图,之后我们想在公共站点中添加,那么我们如何在公共站点上重用相同的视图呢?
答案 0 :(得分:1)
从技术上讲,正如其他人已经说过的那样,您可以将您想要共享的所有内容放在类库项目中,然后从其他项目中引用该项目。视图有点不同,因为为了在项目之间共享它们,您必须编译它们。你需要Razor Generator。
但实际上,应该在项目之间共享视图(除了布局之类的东西),并且几乎不存在应该共享控制器的情况。如果重叠很好,那么两个项目不实际上是两个项目,而不是一个项目。控制器和视图是根据应用程序定制的,在大多数情况下共享它们是没有意义的。然而,分享您的模型和其他课程是一个非常好的主意。
答案 1 :(得分:0)
我能想到的两种方法:
第一个选项是使用 MVC区域 。它为每个区域提供不同的控制器/视图,同时共享相同的模型。您还可以在Helper类中封装常用方法。
第二个选项,创建3个项目。一个是包含通用逻辑,模型,验证,发送电子邮件等的.NET库。然后创建另外两个MVC项目,每个站点一个,并引用该项目。
答案 2 :(得分:0)
查看您网站中的区域(这将允许您保持项目独立,但作为一个最终解决方案)。另外,请查看在另一个库中编译视图,以便在项目之间共享它们。
一些参考文献: