【发布时间】: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 代码,如果它是简单的
<form>在视图中也显示此代码。 -
someotherparamter 永远不能接收空值。 int 是一个值类型
-
@Rickard,正确,这就是引发异常的原因。要理解为什么会发生这种情况,我们必须看看这个动作是如何被调用的。
-
你能显示做 POST 的客户端代码吗
标签: c# forms asp.net-mvc-3 api post