私は新しい 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
およびを調べる同一のコードが含まれるようになり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 原則 (Don't Repeat Yourself) に熱心であり、何らかの方法でその共通コードを分離し、コントローラーの署名を次のように変更できるかどうか疑問に思っています。
public ActionResult Index(Branch branch, string name, int id)
{
// start the real code here...
}