我使用Asp.Net MVC的,我有我的控制器,這個方法:無法轉換對象,從AJAX調用收到,成一個長
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult LinkAccount(string site, object id)
{
return this.Json(id);
}
下面是調用它的AJAX方法:
$.post("/Account/LinkAccount", { site: "Facebook",
id: FB.Facebook.apiClient.get_session().uid },
function(result) {
alert(result);
}, "json"
);
返回this.Json(id);使警報工作......它提醒7128383(類似的東西)。
,但如果我改變this.Json(id)
到this.Json(Conver.ToInt64(id));
警報不火......
從對象接收到的很長的,爲什麼我不能轉換對象的任何想法?
我已經知道改變LinkAccount
方法來接受一個長時間工作就好了。這只是我需要它作爲一個對象,因爲我連接的其他一些網站有ID的字符串而不是longs。
更新:我試着在localhost上運行代碼,所以我可以設置一個斷點。首先,我將行return this.Json(Convert.ToInt64(id));
更改爲long idAsLong = Convert.ToInt64(id));
。下面是調試器告訴我:
當我將鼠標懸停在ID,它說:「ID | {字符串[1]}」
,當我按加號按鈕表示:「[ 0] | '7128383' 「當我將鼠標懸停在idAsLong,它說:」 idAsLong | 0「
爲什麼它不正確地轉換它?
這是什麼?Json幹什麼?它可以接受Int64嗎? – shahkalpesh 2009-08-06 03:35:04
因此,id是一個字符串數組,您無法將其轉換爲Int64。第0個元素包含實際的ID(可以轉換爲Int64)。 long idAsLong = Convert.ToInt64(id [0]); – shahkalpesh 2009-08-06 03:37:09
你是正確的shahklapesh,除了因爲id是一個對象,你不能使用索引像[0]。相反,什麼工作,是這樣的:Convert.ToInt64(((string [])id)[0])。謝謝你的幫助。如果你在答案中重寫了你所說的話,我會接受它給你的信用/代表。 – Matt 2009-08-06 04:28:07