在ASP MVC 2中向控制器发送参数

时间:2011-09-27 15:15:44

标签: asp.net-mvc asp.net-mvc-2 parameters

我正在编写一个用于管理多个子网站的区域,几乎所有功能在每个站点都是相同的(添加/编辑/删除页面等),我的实例化存储库采用SiteIdentity,因此所有数据访问方法都是不可知的与此相关。我目前遇到的问题是试图使我的行动方法也不可知。

我想要使用的网址格式如下:

"ExternalSite/{identity}/{controller}/{action}/{id}"

一种天真的方法是让每个动作都采用identity参数,但这意味着必须在每个动作上将其传递到我的存储库,并将其包含在ViewData中以获取几个UI元素。我更倾向于在控制器中发生一次这样的事情,例如在它的构造函数中。

最好的方法是什么?目前我能想到的最好的方法是尝试从RouteData词典中查找和转换身份,但我觉得应该有一个更优雅的解决方案。

2 个答案:

答案 0 :(得分:1)

您可以在Request.RequestContext.RouteData中访问路由值,因此您可以创建基本控制器和公共属性站点标识,在这种情况下,您可以从所有继承的控制器中的所有操作访问它。

答案 1 :(得分:1)

每次有特定的参数名称(也称为RouteData字典键)时,您都希望使用OnActionExecuting或Custom ModelBinder来执行该逻辑。

  1. Creating a custom modelbinder in ASP.NET MVC
  2. Creating an OnActionExecuting method in ASP.NET MVCDoing Serverside tracking in ASP.NET MVC