【问题标题】:POST not accepting int parameterPOST 不接受 int 参数
【发布时间】:2011-09-28 06:08:18
【问题描述】:

我对 ASP.NET MVC3 有疑问。

我正在尝试将一些参数发布到 JSONResult 操作。当我使用 GET 时它工作得很好,但是当我使用 POST 时,我得到一个错误,因为显然在使用 POST 时,它不会接受我的整数参数,并说参数字典包含它们的空值。

以前有人遇到过这个吗?谢谢。

编辑:一些代码,根据要求:

public JSONResult PostingHere(string username, int someotherparameter) {
    //Code   
}

真的,这才是最重要的,因为在 POST 时会抛出异常,因为显然一个空值被传递给 someotherparameter 参数。使用 GET 时,如前所述,它的工作原理很花哨。

预期用途是使用 iPhone 上的 NSURLRequest 进行发布,但我一直在使用名为 Poster 的 firefox 扩展进行调试,得到了相同的结果。完全错误:

参数字典包含方法“System.Web.Mvc.JsonResult PostingHere(System.String, Int16)”的不可为空类型“System.Int16”的参数“someotherparameter”的空条目

编辑 2:根据要求,我将添加一个调用导致错误的操作的示例:

<form action="http://fullurlhere.com/Controller/PostingHere" method="POST">
<input type="hidden" name="userid" value="astring" />
<input type="hidden" name="someotherparameter" value="100" />
<input type="submit" value="Brace for impact" />
</form>

编辑3:帖子数据;别介意变量名的差异,这些是它们的实际名称。

编辑 4:更神秘的是,当在我自己的计算机上使用与服务器运行的 MVC 项目相同的本地服务器进行测试时,问题就消失了。所以问题可能出在服务器端设置中。

已解决:结果当我评估请求时,服务器将我从 http:// 重定向到 https://,导致我丢失了 POST 数据。感谢大家进行如此出色的运动。

【问题讨论】:

  • 没有代码的不可回答的问题。当在这里显示你的代码时,相关的东西是:模型、控制器操作、javascript、视图。
  • 现在你已经展示了你的控制器动作,请展示这个动作是如何被调用的。如果您使用 AJAX,请显示您的 javascript 代码,如果它是简单的 &lt;form&gt; 在视图中也显示此代码。
  • someotherparamter 永远不能接收空值。 int 是一个值类型
  • @Rickard,正确,这就是引发异常的原因。要理解为什么会发生这种情况,我们必须看看这个动作是如何被调用的。
  • 你能显示做 POST 的客户端代码吗

标签: c# forms asp.net-mvc-3 api post


【解决方案1】:

试试

public JSONResult PostingHere(string username, int? someotherparameter) {
    //Code   
}

【讨论】:

  • 我可以这样做,但实际的问题是参数显然在不应该传递的时候传递了一个空值,因为我绝对肯定它每次都与请求一起传递。当数据库查询缺少参数时,将其设置为可空可能只会导致错误。
  • @AndreasCarlbom:我见过很多人对事情“绝对积极”,直到事实证明他们错了:) 请显示相关的代码/html/无论是什么发布到这个。在 Wireshark 中捕获的请求正文的副本也会很有用。
  • 好吧,你可以看看我写的示例表格。我将着手制作尸体的副本。
  • @Andreas Carlbom,您展示的表格效果很好。它正确发送所有参数。发布此表单时,浏览器还将Content-Type 正确设置为application/www-form-urlencoded。这在您的实际客户端代码中不会发生。下载并安装 Fiddler,嗅探 HTTP 流量,你会看到这个 iPhone 没有发送正确的 HTTP Post 请求。如果您想获得帮助并了解为什么不会发生这种情况,您将不得不展示(我重复一遍)客户端代码。
  • 问题是我已经尝试了我写的表格,以及一系列其他发布数据的方法,比如我原来的帖子中所说的 firefox 扩展海报 - 问题仍然存在,并且将数据发布到服务器的每种方法都会导致相同的错误,我开始认为客户端实际上与问题无关。
【解决方案2】:

已解决:结果当我评估请求时,服务器将我从 http:// 重定向到 https://,导致我丢失了 POST 数据。感谢大家进行如此出色的运动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 1970-01-01
    相关资源
    最近更新 更多