我正在编写一个用于管理多个子网站的区域,几乎所有功能在每个站点都是相同的(添加/编辑/删除页面等),我的实例化存储库采用SiteIdentity,因此所有数据访问方法都是不可知的与此相关。我目前遇到的问题是试图使我的行动方法也不可知。
我想要使用的网址格式如下:
"ExternalSite/{identity}/{controller}/{action}/{id}"
一种天真的方法是让每个动作都采用identity参数,但这意味着必须在每个动作上将其传递到我的存储库,并将其包含在ViewData中以获取几个UI元素。我更倾向于在控制器中发生一次这样的事情,例如在它的构造函数中。
最好的方法是什么?目前我能想到的最好的方法是尝试从RouteData词典中查找和转换身份,但我觉得应该有一个更优雅的解决方案。
答案 0 :(得分:1)
您可以在Request.RequestContext.RouteData
中访问路由值,因此您可以创建基本控制器和公共属性站点标识,在这种情况下,您可以从所有继承的控制器中的所有操作访问它。
答案 1 :(得分:1)
每次有特定的参数名称(也称为RouteData字典键)时,您都希望使用OnActionExecuting或Custom ModelBinder来执行该逻辑。