MVC - 模拟表单POST

时间:2009-12-28 21:15:11

标签: asp.net-mvc

我创建了一个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参数。

这是可能的,还是有其他选择来实现这个目标?

谢谢, 乔治

1 个答案:

答案 0 :(得分:3)

尝试使用您当前的ControllerActionInvoker创建InvokeAction并致电ControllerContext