提交的POST内容会覆盖additonal URL params

时间:2013-12-27 13:20:07

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

我通过xhr请求提交数据,该请求包含POST数据以及POST数据为JSON字符串的一些URL参数。

这是一个示例控制器和一个示例网址

public ActionResult Update(string collection)
{
/* method body */
}

somepath/SomeController/Update?_id=r43r34r34r&collection=astring

如果POST数据现在看起来像

{
    collection: 'SomeString'
}

MVC覆盖URL中的param,以便在控制器中集合字符串将'SomeString'作为值而不是'astring'。有没有办法防止这种行为?

2 个答案:

答案 0 :(得分:1)

除了使用自定义模型绑定器确定URI的优先级之外,解决此问题的唯一方法是:

  • 将查询字符串和操作方法参数中的参数名称更改为不在POST请求正文中的内容。
  • 直接从控制器中的查询字符串中选取:

    var aCollection = Request.QueryString["collection"].ToString();

答案 1 :(得分:0)

如果您将方法签名更改为Update(string[] collection),则可能会得到(我不确定)所有值。