参数字典包含用于方法的非可空类型“System.Int32”的参数“foo”的空条目

时间:2013-01-18 09:40:20

标签: c# asp.net-mvc facebook facebook-c#-sdk

从我在其他帖子上看到的这个错误是因为方法签名中给出的参数与发布的输入名称不匹配。或者以某种方式甚至没有发送价值。

首先,这个页面是登录Facebook的测试页面。它检索用户的uid和访问令牌,然后将其发送到服务器以存储在会话中并重定向到另一个页面。所有的javascript都取自C#FB sdk,服务器端非常基本。

我感到困惑的真正问题是,如果我在FB上以我自己的帐户登录但是测试用户,而不是由API生成的临时测试用户帐户的朋友,它会正确运行弹出窗口后出现错误,要求用户授予应用程序权限。我在提交之前查看了表单数据,它隐藏了输入,并在服务器上为我的参数提供了相应的名称和值。

知道为什么它不会通过测试用户的帖子发送foo变量吗?

编辑:这是我的帐户正常运行的javascript,无法为测试用户发送uid。我重命名了一些查询字符串参数,但

var uid = response.authResponse.userID;
var accessToken = response.authResponse.accessToken;

// Do a post to the server to finish the logon
// This is a form post since we don't want to use AJAX
var form = document.createElement("form");
form.setAttribute("method", 'post');
form.setAttribute("action", 'BAR>');

var tField = document.createElement("input");
tField.setAttribute("type", "hidden");
tField.setAttribute("name", 'RAHR');
tField.setAttribute("value", accessToken);
form.appendChild(tField);

var uField = document.createElement("input");
uField.setAttribute("type", "hidden");
uField.setAttribute("name", 'foo');
uField.setAttribute("value", uid);
form.appendChild(uField);

document.body.appendChild(form);
form.submit();

//Server side
public ActionResult BAR(string RAHR, int foo)

2 个答案:

答案 0 :(得分:0)

事实证明,进入的价值太大了。导致int参数溢出而不是给出一个奇怪的值MVC而不是我想的。

答案 1 :(得分:0)

将您的方法替换为 - > public ActionResult BAR(string RAHR,int foo) 到 - > public ActionResult BAR(string RAHR,int?foo)