2009-08-06 5 views
0

에 아약스 호출에서 받았다 객체를, 변환 할 수 없습니다, 나는 내 컨트롤러에서이 방법을내가 Asp.Net-MVC를 사용하고 긴

$.post("/Account/LinkAccount", { site: "Facebook", 
           id: FB.Facebook.apiClient.get_session().uid }, 
     function(result) { 
      alert(result); 
     }, "json" 
    ); 

this.Json (id); 경고가 작동합니다 ... 경고 7128383 (비슷한). 내가 개체를 변환 할 수없는 이유의 어떤 생각이 오래에 객체로부터받은

하지만 this.Json(Conver.ToInt64(id));this.Json(id)을 변경하는 경우 경고가 발생하지 않습니다 ...?

내가 이미 알고있는 대신 LinkAccount을 받아들이는 방법을 변경하는 것이 좋습니다. 연결되는 다른 사이트에는 ID보다는 오랫동안 문자열이 있기 때문에 개체로 사용해야합니다.

업데이트 : 내가 breakpoint를 설정할 수 있도록 localhost에서 코드를 실행 해 보았습니다. 먼저 return this.Json(Convert.ToInt64(id));long idAsLong = Convert.ToInt64(id));으로 변경했습니다. 여기에 디버거가 나에게 말하고있는 작업은 다음과 같습니다

  • 내가 아이디 위에 마우스를하는 경우는 말한다 : "ID | {문자열 [1]}"
    내가 더하기 버튼을 누를 때이다 쇼 "[ 0] | '7128383' "

  • 내가 idAsLong 위로 마우스를 가져가 말한다 :"idAsLong | 0 "

왜 제대로 변환되지 않습니까?

+0

이것은 무엇입니까? Json합니까? Int64를 수용 할 수 있습니까? – shahkalpesh

+0

그래서, id는 Int64로 변환 할 수없는 문자열 배열입니다. 0 번째 요소는 실제 ID (Int64로 변환 가능)를 포함합니다. long idAsLong = Convert.ToInt64 (id [0]); – shahkalpesh

+0

id가 객체이므로 [0]과 같은 인덱스를 사용할 수 없다는 점을 제외하고는 올바른 shahklapesh였습니다. 대신 무엇이 효과가 있었습니까? Convert.ToInt64 (((string []) id) [0]). 당신의 도움을 주셔서 감사합니다. 대답에서 말한 내용을 다시 써 주시면 신용/담당자에게 알려 드릴 것입니다. – Matt

답변

1

Shahklapesh는 말했다 :

그래서, ID가 당신이 INT64로 변환 할 수 없습니다 문자열의 배열입니다. 0 번째 요소는 실제 ID ( 을 Int64로 변환 할 수 있음)를 포함합니다. long idAsLong = Convert.ToInt64 (id [0]);

id가 개체이기 때문에 [0]과 같은 인덱스를 사용할 수 없다는 점만 제외하면 어느 것이 옳았 는가? 그 대신 효과가 있었던 것은 Convert.ToInt64(((string[])id)[0])

Shahklapesh!

1

모델이 요청 매개 변수에서 개체를 만드는 방법을 알고 있다고 생각하지 않습니다. 따라서 얻을 수있는 것은 null입니다. id를 문자열로 받아 들여 long으로 변환 해보십시오.

[AcceptVerbs(HttpVerbs.Post)]  
public ActionResult LinkAccount(string site, string id) 
{ 
    return this.Json(Convert.ToInt64(id)); 
} 

아니면 단지 (단지 어쨌든 문자열로 다시 직렬화되는) JSON을 통해 다시 전달하고 있기 때문에 당신은 문자열로 떠날 수있다. 서버에서 오랫동안 필요하다면 변환 만하면됩니다.