表单序列化问题
本文关键字:问题 序列化 表单 | 更新日期: 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 个自定义构造函数中的哪一个。
因此,请继续重新考虑视图模型的设计。可以使用继承,但不能使用自定义构造函数。