我目前正在开发一个内容管理的多租户应用程序,该应用程序将具有一组管理员可访问的页面和一组面向公众的页面。我对管理员可访问的页面并不太担心,因为我将拥有一个用户登录管理区域的单一管理员URL。我的问题涉及面向公众的页面。
如果我们想象管理页面允许您创建和管理一组学院网站的内容,按学校分组,面向公众的页面只显示该内容。
我已设置以下路线来处理访问面向公众的页面:
routes.MapRoute(
name: "Site",
url: "{schoolName}/{collegeName}/{controller}/{action}/{id}",
defaults: new { schoolName = "Oxford", collegeName = "Balliol", controller = "Home", action = "Index", id = UrlParameter.Optional }
);
这样可以正常工作,并且可以毫无问题地调用以下控制器操作:
public class HomeController
{
public ActionResult Index(string schoolName, string collegeName)
{
return View();
}
}
但是我想知道是否有办法让这个工作无需总是在我的控制器操作中接受schoolName
和collegeName
作为参数?如果我总是必须在为面向公众的页面创建的每个操作中接受这些参数,我就会看到它成为一个问题。
我正在考虑创建一个PublicFacingController
,其中所有面向公众的页面都包含其中包含学校名称和学院名称的属性。但是我不确定如何在派生控制器中填充它们而不将它们作为参数传递给动作。