仅序列化视图模型类的一部分



我正在使用 Asp.net MVC 3和 Json.net 库。

我有一个名为 特许经营信息的视图模型类 有几个属性。

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";
        }
    }

我有一个控制器 FranchiseData,它将视图模型数据序列化为 Json。

public ActionResult FranchiseData(string network)
        {
            JsonNetResult jsonNetResult = new JsonNetResult { Formatting = Formatting.Indented };
            FranchiseInfo franchiseInfo = new FranchiseInfo();
            franchiseInfo.Initialize();
            jsonNetResult.Data = franchiseInfo;
            return jsonNetResult;
        }

控制器具有称为网络的单个参数。当页面首次加载时,我希望序列化视图模型 FranchiseInfo 中的所有属性并将其发送到视图。在这种情况下,网络值为空。目前为止,一切都好。

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

当发生特定事件时,我正在向同一 FranchiseData 控制器发出新请求,传递与 contoller 参数绑定的网络参数。

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

现在我想调用特许经营信息视图模型类的 SetDefaultValues(( 方法,该方法为我的某些属性设置默认值,并仅将这些属性发送回视图。

所以基本上我使用相同的 contoller FranchiseData 来序列化来自 FranchiseInformation 的视图模型数据。当参数 network 为空时,应序列化 FranchiseInfo 的所有属性(文件夹名称、全名和测试下拉列表(。当我再次调用控制器并将值传递给网络参数时,我想调用 SetDefaultValues(( 方法,设置一些属性并再次仅序列化这些属性并将它们发送到服务器(仅限文件夹名称和全名(。有没有办法做到这一点?任何帮助将不胜感激。谢谢!

创建一个包含最少属性量的基类并继承它。

如果要使用较少数量的属性,请发回基类,否则发送回子类。

相关内容

  • 没有找到相关文章

最新更新