期望的结果:
4个面向客户的站点作为分离项目 所有四个网站使用的一组管理代码
我目前的设置是4个项目:
模型/实体的核心
存储库数据
控制器,以及控制器
Web for views
现在,Web项目包含管理员和面向客户的方面的视图。我想把它分成一个管理项目和4个“客户”项目。
我谷歌在从网络应用程序引用网络应用程序方面收效甚微。我在haacked.com上看过areas,但这似乎不太合适。我并不特别想在dll中嵌入视图,因为在调试/编码标记时这会很麻烦。显然我不想要代码的多个副本。
有人可以指出或建议可行的方法吗?我有点难过。
答案 0 :(得分:1)
如果将项目拆分为4个webproject的原因是客户有不同的观点,请试试这个:
拥有1个webproject并使用子文件夹查看不同的视图。
您可以使用自定义视图引擎来决定应该呈现哪个视图。 Web的每个安装都在web.config中定义了客户。
public class MultiTennantWebFormViewEngine : WebFormViewEngine
{
private static string[] LocalViewFormats =
new string[] {
"~/Views/{1}/" + ApplicationConfiguration.CustomerName + "/{0}.aspx",
"~/Views/{1}/{0}.aspx",
"~/Views/{1}/" + ApplicationConfiguration.CustomerName + "/{0}.ascx",
"~/Views/{1}/{0}.ascx",
"~/Views/Shared/{0}.aspx",
"~/Views/Shared/{0}.ascx"
};
public LocalizationWebFormViewEngine()
{
base.ViewLocationFormats = LocalViewFormats;
base.PartialViewLocationFormats = LocalViewFormats;
base.MasterLocationFormats = new string[] {
"~/Views/{1}/" + ApplicationConfiguration.CustomerName + "/{0}.master",
"~/Views/{1}/{0}.master",
"~/Views/Shared/" + ApplicationConfiguration.CustomerName + "/{0}.master",
"~/Views/Shared/{0}.master"
};
}
}