0

在我的 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
}

TestModel 在我的视图中用于显示来自 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 派生自 Test。关于如何使它工作的任何建议?

4

1 回答 1

1

我认为序列化不起作用,因为 TestModel 派生自 Test。关于如何使它工作的任何建议?

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

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

于 2012-04-24T21:02:31.157 回答