我正在开发一个新的 MVC 5 项目。它是一个单一的多租户站点,允许许多组织和分支机构维护一个页面。所有页面都以以下 url 格式开头:
http://mysite.com/{organisation}/{branch}/...
例如:
http://mysite.com/contours/albany/...
http://mysite.com/contours/birkenhead/...
http://mysite.com/lifestyle/auckland/...
我在{organisation}
and{branch}
之前用{controller}
and声明了我的 RouteConfig {action}
:
routes.MapRoute(
name: "Default",
url: "{organisation}/{branch}/{controller}/{action}/{id}",
defaults: new { controller = "TimeTable",
action = "Index",
id = UrlParameter.Optional });
这工作得很好。然而,现在每个控制器的顶部都有相同的代码来检查organisation
and branch
。
public ActionResult Index(string organisation, string branch, string name, int id)
{
// ensure the organisation and branch are valid
var branchInst = _branchRepository.GetBranchByUrlPath(organisation, branch);
if (branchInst == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
// start the real code here...
}
我热衷于 DRY 原则(不要重复自己),我想知道是否有可能以某种方式隔离该公共代码并将我的控制器签名更改为如下所示:
public ActionResult Index(Branch branch, string name, int id)
{
// start the real code here...
}