如何路由MVC,以便我可以发布一个带有model.action参数的表单?

时间:2013-07-21 21:29:24

标签: c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 asp.net-mvc-routing

希望对于那里的人来说这很容易。

我正在尝试将一个表单发布到我的MVC控制器上,该控件碰巧在模型上有一个“action”属性。

不幸的是,model.action正在解析为控制器操作,而不是已发布模型的action属性。

public class PostModel
{
    public string action { get; set; }
    public string username { get; set; }
    public string password { get; set; }
}

public ActionResult DoSomething(string id, PostModel model)
{
  // id == 98f4
  // model.username == "TEST"
  // model.password == "TEST"
  // model.action == "DoSomething" NOT "TEST" as I was expecting.
}

以下是我发布的内容:

POST -> http://localhost:7832/Forms/DoSomething/98f4?username=TEST&password=TEST&action=TEST

请记住,我无法控制发布的表单数据,因此无法更改模型的action属性。我需要能够在MVC服务器端解决这个问题。

如何将模型中action属性的设置覆盖到控制器的动作?我只需要在我的项目中为一个特定的控制器使用此功能。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

好的,我发现了问题。实际上,我使用fiddler2来控制控制器动作。当我将操作作为URL的一部分时,MVC将替换为控制器操作。

当我将动作作为request.body的一部分,并将“Content-Type:application / x-www-form-urlencoded”添加到标题中时,控制器模型具有预期的值。