0

viewmodel을 모델로 포함하는 뷰가 있습니다. viewmodel (어떤 클래스의 목록) 클래스에서보기에서 컨트롤러로 액션 중 하나를 보내려고합니다. jquery를 사용하여 viewmodel (뷰에서 컨트롤러로)의 클래스 목록을 전달합니다.

내보기 모델

public class CustomClass 
    { 
     public ABC objABC { get; set; } 
     public DEF objDEF { get; set; } 
     public List<XYZ> objXYZLst { get; set; } 
    } 

인이이 내 시야 전화

var url = "@Url.Action("ActionName", "ContollerName")"; 
    var model = '@Html.Raw(Json.Encode(Model.objXYZLst))'; 
    $.ajax({ 
     type: 'post', 
     url: url, 
     data: JSON.stringify(model), 
     contentType: 'application/json', 
     dataType: "json", 
     success: function (data) { 
      $("#dvLst").html(data); 
     } 
    }); 

입니다 XYZ 클래스

public class XYZ 
    { 
     public long RelationPersonId { get; set; } 
     public string Relationship { get; set; } 
     public string PhoneNo { get; set; } 
     public string PropertyName { get; set; } 
     public bool IsPropertyError { get; set; } 

    } 

이고 이쪽은 내 작업입니다

[HttpPost] 
     public PartialViewResult ActionName(List<XYZ> model) 
     { 
      return PartialView(model); 
     } 

컨트롤러의 값은 항상 null이며 Model.objXYZLst에는 두 개의 데이터 배열이 있습니다. 현재 문자열 변수 선언 한

+0

보기 위해 코드를 게시 해주세요. –

+1

컨트롤러에서보기로 보낸 컨트롤러에 뷰에서 동일한 변경되지 않은 컬렉션을 정확히 전달하는 지점은 무엇입니까 (그냥 GET 메서드 에서처럼 컬렉션을 다시 가져옵니다.하지만 이미 컬렉션을 렌더링 했으므로 루프 안의보기에서 또는 @Html.Partial ("ActionName", Model.objXYZLst)' –

+0

@ haim770- thanx bro ..got 2 count –

답변

2

도와주세요 : 당신이 자바 스크립트 객체를 필요로하는 반면

var model = '@Html.Raw(Json.Encode(Model.objXYZLst))'; 

를, 그래서 주위의 인용 부호를 제거하고 그것은 작동합니다

var model = @Html.Raw(Json.Encode(Model.objXYZLst)); 

또 다른 문제를 코드를 사용하면 지정한 예상 반환 유형을 사용할 수 있습니다.

dataType: "json", 

하지만 컨트롤러 액션이 반환하는 HTML 조각 :

public PartialViewResult ActionName(List<XYZ> model) 
{ 
    return PartialView(model); 
} 

jQuery를 다시 자바 스크립트가 실패 객체와 success 콜백이 HTML을 직렬화하려고

클라이언트에서 호출되지 않습니다. 따라서 dataType: "json",도 제거하고 jQuery를 그대로 두어 Content-Type 응답 헤더를 사용하여 자동으로 추론합니다.

+0

내 코드는 JSON.stringify 만 제거하여 작업했습니다. –

+0

그래, 그 또 다른 유효한 방법입니다. –

+0

예, 작업에서 돌아온 후 데이터 유형이 json 인 div에서 콘텐츠를 렌더링하지 않았습니다. 정보를 위해 일하고 있습니다. 고맙습니다. –