2012-05-04 2 views
0

Asp.net MVC 3 및 ​​Json.net 라이브러리를 사용하고 있습니다.뷰 모델 클래스의 일부만 직렬화

두 가지 속성으로 FranchiseInfo라는 뷰 모델 클래스가 있습니다.

public class FranchiseInfo 
    { 
     public string FolderName { get; set; } 
     public string FullName { get; set; } 

     public List<string> TestDropDown { get; set; } 

     public void Initialize() 
     { 
      TestDropDown = new List<string> 
           { 
            "Test1", 
            "Test2" 
           }; 
     } 

     public void SetDefaultValues() 
     { 
      FolderName = "SomeData"; 
      FullName = "SomeOtherData"; 
     } 
    } 

보기 모델 데이터를 Json으로 직렬화하는 컨트롤러 FranchiseData가 있습니다.

public ActionResult FranchiseData(string network) 
     { 
      JsonNetResult jsonNetResult = new JsonNetResult { Formatting = Formatting.Indented }; 

      FranchiseInfo franchiseInfo = new FranchiseInfo(); 

      franchiseInfo.Initialize(); 
      jsonNetResult.Data = franchiseInfo; 

      return jsonNetResult; 
     } 

컨트롤러에는 network이라는 단일 매개 변수가 있습니다. 페이지가 처음로드 될 때, 뷰 모델 FranchiseInfo의 모든 속성을 직렬화하여 뷰로 보내주기를 원합니다. 이 경우 네트워크 값은 null입니다. 여태까지는 그런대로 잘됐다.

$.getJSON("Home/FranchiseData", function (data) { 
    // get all FranchiseInfo properties 
} 

특정 이벤트 내가 콘트롤 매개 변수와 결합 같은 FranchiseData 컨트롤러 통과 네트워크 매개 변수에 대한 새로운 요청을하고 발생합니다.

onTemplateChange = function (value) { 
     var network = $("#networks :selected").val(); 
     $.getJSON("Home/FranchiseData", { network: network }, function (data) { 
     // get only FolderName and FullName properties 
}); 
} 

지금 내 일부 속성에 기본값을 설정하고, 다시보기 만 이러한 속성을 보내 프랜차이즈 정보보기 모델 클래스의() 메소드 SetDefaultValues를 호출합니다.

그래서 기본적으로 FranchiseInfo에서 뷰 모델 데이터를 직렬화하기 위해 동일한 contoller FranchiseData를 사용하고 있습니다. 매개 변수 네트워크가 null이면 FranchiseInfo의 모든 속성을 직렬화해야합니다 (FolderName, FullName 및 TestDropDown). 컨트롤러를 호출하고 네트워크 매개 변수에 값을 전달할 때 SetDefaultValues ​​() 메서드를 호출하고 일부 속성을 설정하고 이러한 속성 만 다시 serialize하여 서버 (FolderName 및 FullName 전용)로 보내려고합니다. 이렇게하는 방법이 있습니까? 어떤 도움이라도 대단히 감사하겠습니다. 고맙습니다!

답변

2

최소한의 속성을 포함하는 기본 클래스를 만들고 상속합니다.

적은 수의 속성을 사용하려면 기본 클래스를, 그렇지 않은 경우에는 하위 클래스를 다시 보냅니다.

+1

답장을 보내 주셔서 감사합니다. 익명의 클래스를 사용하여 필요한 속성 만 직렬화하기로 결정했습니다. – Mdb