我创建了一个MVC应用程序,它根据用户数据动态路由动作和控制器,因此没有标准动作,而是动态命名动作。
为了正确路由控制器和操作,每个路由必须通过集中索引,该索引确定用户是否已转到有效系统。即。
http://mysite.com/Systems/SystemName/RenameSystem
...其中 SystemName 是动态系统名称, RenameSystem 是操作。
将系统正确路由到RenameSystem控制器后,将提示用户使用允许他们更改系统名称的文本框。单击提交时,表单将路由回原始索引控制器
public ActionResult Index(string systemName, string action)
而不是标准
public ActionResult RenameSystem(string systemName)
我已经在逻辑中确定RequestType是POST还是GET。如果RequestType是POST,则逻辑会偏离并可以捕获请求对象中包含的Form数据。
我的问题是,如何获取Form数据,其中包含我的systemName字段并对其进行路由,以便我不需要将数据放入switch语句中。即我不想这样做:
switch case(action)
{
case "RenameSystem":
return RenameSystem(Request.Form["systemName"]);
}
我可以动态POST到标准:
public ActionResult RenameSystem(string systemName)
...只是模仿调用View。
简单地说,我希望能够采取行动, RenameSystem 并调用它,以便我的systemName将自动落入RenameSystem的systemName参数。
这是可能的,还是有其他选择来实现这个目标?
谢谢, 乔治
答案 0 :(得分:3)
尝试使用您当前的ControllerActionInvoker
创建InvokeAction
并致电ControllerContext
。