0

Asp.netMVC3と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;
        }

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

4

1 に答える 1

2

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

使用するプロパティの量を減らしたい場合は基本クラスを送り返し、それ以外の場合はサブクラスを送り返します。

于 2012-05-04T14:21:26.270 に答える