2013-01-18 50 views
0

,參數字典包含非空值類型「System.Int32」的參數'foo'的空項,從我在其他帖子中看到的這個錯誤是因爲方法簽名中給出的參數didn' t匹配發布的輸入名稱。或者說,價值甚至沒有被髮送。對於方法

首先這個頁面是登錄到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) 
+0

這真的很難知道發生了什麼事情,當你沒有給出任何代碼。 –

+1

好吧,很難說沒有代碼的東西,但是你的錯誤信息說你應該把'foo'類型的'int'改成'int?'。 'int'不允許有'null'值。 –

+0

對,我認爲代碼不會幫助,因爲將數據交給方法時發生錯誤。該方法接受一個字符串和一個int,並且都不能爲空。我不希望它們爲空。 我將添加JavaScript,但它從C#fb sdk複製。 – ProdigousRanger

回答

0

原來,輸入的值太大。導致int參數溢出,而不是給出一個奇怪的值MVC否定它,而不是我猜。

0

替換從你方法 - >公衆的ActionResult BAR(字符串拉赫爾,INT FOO) 到 - >公衆的ActionResult BAR(字符串拉赫爾,詮釋富?)