【发布时间】:2011-07-31 07:50:02
【问题描述】:
我正在开发一个正在构建系统的应用程序,其中多个“客户”将使用该系统,并且 99.9% 的控制器/操作将是相同的,只是提取不同的数据,但在某些时间和地点可能需要自定义控制器操作或视图。
现在我正在使用类似于以下的默认路由来获取带有请求的公司名称。
routes.MapRoute(
"Default", // Route name
"{company}/{controller}/{action}/{id}",
new {company = "Unknown", controller = "Home",
action = "Index", id = UrlParameter.Optional}
);
这很好用,因为我可以像这样定义我的个人控制器操作
public ActionResult ShowReport(string company)
{
//Actual code goes here..
}
我有一个系统可以获取该特定公司的数据段并返回正确的视图。所以对于我 99.9% 的情况,这看起来很棒。当我需要呈现不同的视图或有特定于一家公司的其他操作时,我正在寻找一种解决方案。
我可以在我的操作中添加开关或其他逻辑,但这感觉太脏了......
【问题讨论】:
-
建议的最佳做法是使控制器尽可能纤薄。将这种逻辑推入你的模型怎么样?让它足够聪明,知道给定公司需要哪些额外数据。
-
Jay 我同意,但最重要的是,对于某些客户来说,功能确实不同,但仅限于非常有限的情况。
标签: asp.net-mvc-3 architecture multi-tenant