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 전용)로 보내려고합니다. 이렇게하는 방법이 있습니까? 어떤 도움이라도 대단히 감사하겠습니다. 고맙습니다!
답장을 보내 주셔서 감사합니다. 익명의 클래스를 사용하여 필요한 속성 만 직렬화하기로 결정했습니다. – Mdb