我正在编写一个用于管理多个子站点的区域,几乎所有功能在每个站点都是相同的(添加/编辑/删除页面等),并且我在实例化时的存储库采用SiteIdentity,因此所有数据访问方法都与这个.我目前遇到的问题是试图使我的行动方法也不可知.
我想要使用的URL模式是:
“ExternalSite / {身份} / {控制器} / {行动} /(编号)”
一种天真的方法是让每个动作都采用identity参数,但这意味着必须在每个动作上将其传递到我的存储库,并将其包含在ViewData中以用于几个UI元素.我更倾向于在控制器中发生过一次这样的事情,例如在它的构造函数中.
做这个的最好方式是什么?目前我能想到的最好的方法是尝试从RouteData词典中找到并转换身份,但我觉得应该有一个更优雅的解决方案.
最佳答案 听起来您希望每次有特定的参数名称(也称为RouteData字典键)时使用OnActionExecuting或Custom ModelBinder来执行该逻辑.
> Creating a custom modelbinder in ASP.NET MVC
> Creating an OnActionExecuting method in ASP.NET MVC,Doing Serverside tracking in ASP.NET MVC