C# 反序列化MVC模型不起作用

C# 反序列化MVC模型不起作用,c#,asp.net-mvc,asp.net-mvc-3,deserialization,C#,Asp.net Mvc,Asp.net Mvc 3,Deserialization,我有这个模型 [Serializable] public class userMaster { public Step1_userName userName { get; set; } public Step2_userAddress userAddress { get; set; } public Step3_userContact userContact { get; set; } } 在我看来,我是这样对它进行

我有这个模型

[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); 
        }
    }
}
有人知道它为什么不反序列化吗?有没有更好的方法?
谢谢。

我把问题追溯到

@Html.Hidden("RegMod",Model.Serialize())
隐藏的RegMod字段的值与序列化程序例程中的值不同。所以我尝试了这个

<input type="hidden" value="@Model.Serialize()" name="RegMod" />

现在它开始工作了


看起来HTML帮助程序正在处理数据。

为什么要取消/序列化模型,而不为每个属性使用隐藏字段?是的,Step1\u userName和其他属性是可序列化的。@developer10214我需要查看隐藏字段中的数据。@John-如果不想让客户端看到数据,那么我建议一开始就不要把它发给他们。@John-你能告诉我什么是
LosFormatter
?如果这是你问题的解决方案,你可以把它标记为答案。@HenkMollema它不会让我再等10个小时。