繁体   English   中英

ASP.NET MVC多站点设计

[英]ASP.NET MVC multi-site design

我正在寻找一个新的MVC网站,而我要解决的关键问题之一是在公共区域(面向Web)和内部区域之间共享代码。

基本上,我们有两个应用程序,一个是用户访问的公共网站,另一个将在公司内部使用,以查看在公共站点上也可见的某些相同信息。

我希望将它们保留为两个单独的站点(项目),因为我们在每个站点上都有不同的人员团队,并且因为我们想使用不同的身份验证格式(用于公共的表单,用于内部的Windows)。

但是,我们还希望能够在两个站点之间共享一些代码(视图,控制器)。 我们如何设置这两个MVC站点,以便一个MVC站点可以引用另一个项目中的视图和/或控制器?

例如,我们将具有一个视图,使内部用户可以查看我们的公共站点用户的交易历史记录。 如果我们在内部站点中创建了该控制器/视图,后来又想在公共站点中添加该视图,那么我们如何在公共站点上重复使用同一视图?

从技术上讲,正如其他人已经说过的那样,您可以将要共享的所有内容放在类库项目中,然后从其他项目中引用该项目。 视图有些不同,因为要在项目之间共享它们,则必须对其进行编译。 为此,您将需要Razor Generator

但是,实际上,很少要在项目之间共享视图(除了布局之类的视图),而且几乎不存在共享控制器的视图。 如果重叠的部分是伟大的,它是一个参数,这两个项目应该不会 ,其实是两个项目,而是一个。 控制器和视图是如此针对应用程序定制的,以至于大多数情况下共享它们就变得毫无意义。 但是,共享模型和其他类是一个非常好的主意。

我能想到的2种方法:

第一种选择是使用MVC Area 共享相同的模型时,它为每个区域提供不同的控制器/视图。 您还可以将通用方法封装在Helper类中。

第二个选择,创建3个项目。 一个是.NET库,其中包含通用逻辑,模型,验证,发送电子邮件等。然后再创建2个MVC项目,每个站点一个,并引用该项目。

查看在您的站点内使用Areas(这将使您保持项目独立,但作为一个最终解决方案)。 另外,请查看在另一个库中编译视图,以便可以在项目之间共享它们。

一些参考:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM