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のみ)。これを行う方法はありますか?どんな助けでも大歓迎です。ありがとうございました!