表单序列化问题

本文关键字:问题 序列化 表单 | 更新日期: 2023-09-27 18:32:04

在我的MVC应用程序中,我定义了一个ViewModel,如下所示:

public class TestModel : Test
    {        
        public TestModel (Models.Test1 t1)
            :base(t1)
        {  }
        public TestModel (Models.Test1 t1, Models.Test1 t2)
            :base(t1,t2)
        {    }

类测试定义为:

public class Test
    {
        public Test(Models.Test1 t1)
        {
//set the properties for t1
}
public Test(Models.Test1 t1, Models.Test1 t2)
            :this(t1)
{
//set properties for t2
}
}
// properties for t1 and t2
}

测试模型在我的视图中用于显示来自 t1 和 t2 的组合字段。当我像这样提交表格时:

$('form').submit(function (evt) {                 
            Save($(this).serialize(),
             function () {
                 $('.loading').show();
             },
             function () {
                 alert('success');
             });
         });
         $('a.save').click(function (evt) {                
             $(this).parents('form').submit();
         });

- the controller action below is never hit.
    [HttpPost]        
             public JsonResult Save(TestModel camp)
            {                           
                    Helper.Save(camp);
                    return Json(JsonEnvelope.Success());           
            }

我认为序列化不起作用,因为测试模型派生自测试。关于如何使其工作的任何建议?

表单序列化问题

我认为序列化不起作用,因为测试模型派生 从测试。关于如何使其工作的任何建议?

序列化不起作用,因为TestModel没有无参数构造函数。默认模型绑定器不知道如何实例化此类。只有具有无参数构造函数的类才应用作视图模型。或者,您必须编写一个自定义模型绑定器来指示要使用 2 个自定义构造函数中的哪一个。

因此,请继续重新考虑视图模型的设计。可以使用继承,但不能使用自定义构造函数。