2014-02-21 3 views
2

MVC 작업에 의해 반환 된 IList <에서 IList "1-2-3-4-5"와 같은 문자열을 만들어야합니다.MVC의 Ilist <int>을 기반으로 JSON 결과 얻기

작업 :

public virtual JsonResult AdvancedSearch(AdAdvancedSearchViewModel asViewModel) 
{ 
    IList<int> adIds = new List<int>(); 

    try 
    { 
     var asDto = Mapper.Map<AdAdvancedSearchViewModel, AdAdvancedSearchDto>(asViewModel); 

     adIds = _adService.AdvancedSearch(asDto); 
    } 
    catch 
    { 
     adIds = null; 
    } 

    return Json(adIds); 
} 
결과 처리

자바 스크립트 기능 :

function onAdAdvancedSearchSuccess(jsonAdListIds) 
{ 
    $("#adAdvancedSearchListForm #ids").val(jsonAdListIds); 
} 

문제는이 같은 문자열을 얻을 수 있다는 것입니다 "[1,2,3,4]"는의를 "#adAdvancedSearchListForm #ids"HTML 입력 및 "1-2-3-4"를 가져와야합니다.

감사합니다.

답변

0

AJAX는 목록을 변환하므로 예상되는 배열을 반환하고 있습니다.

는 문자열로 배열을 분석하는 시도 :

var r = jsonAdListIds[0]; 
for (var i = 1; i < jsonAdListIds.length; i++) { 
    r += '-' + jsonAdListIds[i]; 
} 
+0

안녕하세요, 고마워요! ;) – Patrick

1

클라이언트 측에서 수행하려는 경우 결과 배열을 반복하고 원하는 문자열을 작성하기 만하면됩니다.

$.getJSON("yourURL", { Name: "John", Loc: "2pm" },function(result){ 
    var str=""; 
    $.each(result,function(i,item){ 
     str=str+"-"+item; 
    }); 
    alert(str); 
}); 

Name으로 가정하면 Loc은 viewmodel의 속성입니다.

서버 측에서 수행하려는 경우 String.Join 메서드를 사용하여 원하는 문자열 표현을 작성할 수 있습니다. 액션 메소드의 반환 유형을 업데이트해야 할 수도 있습니다. JSON을 반환 조치 방법이 콘크리트 문자열 반환 구현에 비해 많은 장소에서 사용할 수 있기 때문에 내 행동 방식을 유지하는 것을 선호

public string AdvancedSearch(AdAdvancedSearchViewModel asViewModel) 
{ 
    List<int> adIds = new List<int>(); 
    //fill the list 
    var resutlStr= String.Join("-",adIds.ToArray()); 
    return resutlStr; 
} 

이 문자열 represetnation 대신 JSON 결과를 반환합니다.

+0

나의 이해는 AJAX 응답이'JsonResult' 그래서이 작동하지 않을 필요가있다. – beautifulcoder

+0

ajax도 문자열을받을 수 있습니다. 그러나 이상적인 솔루션은 많은 곳에서 사용할 수 있기 때문에 서버 측 메소드가 JSON을 반환하도록하는 것입니다. – Shyju

+0

안녕하세요. 제 코드에 가장 간단한 방법으로 @beautifulcoder 대답을 선호합니다. 어쨌든 고마워요 – Patrick

관련 문제