我使用的是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";
}
}
我有一个控制器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;
}
控制器有一个名为network的参数。当页面首次加载时,我希望序列化视图模型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
});
}
现在我想调用Franchise Info视图模型类的SetDefaultValues()方法,该方法将默认值设置为某些属性,并仅将这些属性发送回视图。
所以基本上我使用相同的控制器FranchiseData来序列化来自FranchiseInfo的视图模型数据。当参数网络为null时,应该序列化FranchiseInfo的所有属性(FolderName,FullName和TestDropDown)。当我调用控制器againg并将值传递给network参数时,我想调用SetDefaultValues()方法,设置一些属性并再次序列化这些属性并将它们发送到服务器(仅限FolderName和FullName)。 有没有办法做到这一点?任何帮助将不胜感激。谢谢!
答案 0 :(得分:2)
创建一个包含最少量属性的基类并继承它。
如果要使用较少量的属性和子类,则发送回基类。