2012-05-04 8 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 
} 

特定のイベントが、私はcontollerパラメータと結合する同じ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を使用しています。パラメータnetworkがnullの場合、FranchiseInfoのすべてのプロパティをシリアル化する必要があります(FolderName、FullNameおよびTestDropDown)。コントローラを呼び出してネットワークパラメータに値を渡すときに、SetDefaultValues()メソッドを呼び出し、いくつかのプロパティを設定し、これらのプロパティのみを再度シリアル化してサーバーに送信します(FolderNameとFullNameのみ)。 これを行う方法はありますか?どんな助けでも大歓迎です。ありがとうございました!

答えて

2

最小限のプロパティを含む基本クラスを作成し、継承します。

少ない量のプロパティを使用する場合はベースクラスを返し、それ以外の場合はサブクラスを返します。

+1

ありがとうございます。匿名クラスを使用して必要なプロパティのみをシリアル化することにしました。 – Mdb

関連する問題