我的问题是我有一个抽象类,当使用时正确绑定到页面但是当我尝试将模型(基于抽象类的完全形成的类)发布回控制器时,抽象类的属性是没有人口稠密。
我实施的方式如下
public abstract class BaseClass
{
private int _property1;
public int Property1
{
get{
return _property1;
}
set{
_property1=value;
}
}
}
public class ImplementClass:BaseClass
{
public ImplementClass()
{
}
}
控制器是
public class Ctrler:Controller
{
public ActionResult DoSomthing()
{}
[HTTPPOST]
public ActionResult DoSomthing(ImplementClass model)
{
//...doSomthing with class but the property1 has a value of 0 and debugging will never set the Property on the class
}
}
视图
@model ImplementClass
@(using(Html.BeginForm("DoSomthing","Ctrler"), FormMethod.Post, new { @id = "frm1", @enctype = "multipart/form-data" }))
{
<div>
@Html.HiddenFor(x=>x.Property1,new {@Value="1"})
</div>
<input type="Submit" Value="Submit"/>
}
提交是通过Ajax进行的,代码就像是。
$(function(){
$('form').bind('submit',submitForm);
function submitForm()
{
var submitForm = $('form');
var data = submitForm.serializeObject();
$.ajax(submitForm.prop('action'),
{
cached: false,
type: 'POST',
// dataType: 'json',
// contentType: 'application/json; charset=utf-8',
data: data,
success: function (response)
{
alert(response);
}
}
return false;
}
});
[编辑] 我发现问题是我自己的愚蠢,我在班上有一个受保护的SET。
答案 0 :(得分:1)
要诊断ModelBinder的任何问题(将参数填充到Controller Actions),您可以逐步执行MVC代码。