【发布时间】:2013-06-16 00:05:09
【问题描述】:
我有这个模型,
[Serializable]
public class userMaster
{
public Step1_userName userName { get; set; }
public Step2_userAddress userAddress { get; set; }
public Step3_userContact userContact { get; set; }
}
我像这样在我的视图中对其进行序列化,
@Html.Hidden("RegMod",Model.Serialize())
然后我将数据发布回控制器操作,
[HttpPost]
public ActionResult Step1(Step1_userName userName, string RegMod)
{
var model = (userMaster)RegMod.Deserialize();
model.userName = userName;
if (!ModelState.IsValid)
{
return View(model);
}
return View("Step2", model);
}
我确实在 RegMod 中获取了数据,但它不会反序列化回对象。我得到的只是一个空(null)对象。我还向这个对象添加了新数据,效果很好。
这里是序列化/反序列化类,
namespace MyMVCApplication
{
public static class ExtensionMethods
{
public static string Serialize(this object o)
{
var sw = new StringWriter();
var formatter = new LosFormatter();
formatter.Serialize(sw, o);
return sw.ToString();
}
public static object Deserialize(this string data)
{
if(String.IsNullOrEmpty(data))
return null;
var formatter = new LosFormatter();
return formatter.Deserialize(data);
}
}
}
有谁知道为什么它不反序列化,有没有更好的方法来做到这一点? 谢谢。
【问题讨论】:
-
为什么要反序列化模型而不是为每个属性使用隐藏字段?
-
是的,Step1_userName等都是可序列化的。
-
@developer10214 我需要隐藏隐藏字段中的数据。
-
@John - 如果您不希望客户看到数据,那么我建议您一开始不要将其发送给他们。
-
@John - 你能告诉我
LosFormatter是什么吗?
标签: c# asp.net-mvc asp.net-mvc-3 deserialization