본문 바로가기

프로그래밍/C#

[JavaScript/C#] GET 방식으로 배열 값 전송 (JSON.stringfy, JsonConvert.DeserializeObject)

반응형

 

 

GET 방식에서 배열변수를 파라미터 값으로 전달해보자

 

 

  GET 방식으로 파라미터 전달

 

GET 방식으로 파라미터 전달하면 정상적으로 값이 넘어간다.

var params = { name:"손꽁쥐", id:"ggmouse" };

location.href = "./getUserInfo?" + $.param(params);
public ActionResult getUserInfo(string name, string id)
{
    var userName = name; // 손꽁쥐
    var userId = id; // ggmouse
    
    ...
    
    return View();
}

 

 

자 이제 배열을 넘겨볼까?

아래의 코드와 같이 배열 값을 파라미터로 넘기려 했으나 값이 정상적으로 넘어가지 않았다.

var user = [{name:"손꽁쥐", id:"ggmouse"},{name:"우빙구", id:"bbing"}];
var params = { users : user };

location.href = "./getUserInfo?" + $.param(params);
public ActionResult getUserInfo(EntityUser users)
{
    var userName = user.name; // null
    var userId = user.id; // null
    
    ...
    
    return View();
}

 

 

 

자 그럼 어떻게 해결해볼까?

 

  파라미터 JSON 문자열로 전달

배열을 전달할 수 없다면! 값을 JSON 문자열 형태로 만들어서 넘겨보자

var user = [{name:"손꽁쥐", id:"ggmouse"},{name:"우빙구", id:"bbing"}];

var params = { strUsers: JSON.stringfy(user)};

location.href = "./getUserInfo?" + $.param(params);
public ActionResult getUserInfo(string strUsers)
{
    List<EntityUser> users = null;
    users = JsonConvert.DeserializeObject<List<EntityUser>>(strUsers);
    
    foreach(var user in users)
    {
        var userName = user.name;
    	vAR userId = user.id;
    }

    ...
    
    return View();
}

이렇게 배열을 JSON.stringfy를 통해 JSON문자열로 만든 뒤 넘기고

받은 JSON문자열을 JsonConvert.DeserializeObject로 파싱하여 users에 넣어준다.

 

반응형