Asp.net mvc MVC默认模型绑定器返回空对象

Asp.net mvc MVC默认模型绑定器返回空对象,asp.net-mvc,asp.net-mvc-5,Asp.net Mvc,Asp.net Mvc 5,我遇到了一个问题,默认模型绑定器拒绝绑定到我的对象,这是一个简单对象的列表 班级: public class ReferralHistoryDetail { [Key] public long Referral_Number { get; set; } public Guid QuoteGuid { get; set; } public byte ReferralTypeID { get; set; } public string Referral_Ty

我遇到了一个问题,默认模型绑定器拒绝绑定到我的对象,这是一个简单对象的列表

班级:

public class ReferralHistoryDetail {

    [Key]
    public long Referral_Number { get; set; }
    public Guid QuoteGuid { get; set; }
    public byte ReferralTypeID { get; set; }
    public string Referral_Type { get; set; }
    public DateTime ReferralDateTime { get; set; }
    public string ReferralComments { get; set; }

}
控制器定义:

[HttpPost]
public ActionResult Save(List<ReferralHistoryDetail> details) {
[HttpPost]
公共操作结果保存(列表详细信息){
Fiddler的观点:

我做错了什么

这通过EditorTemplate以以下方式显示:

@using (Html.BeginForm("Save", "Home")) {

    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)

    <div class="tab-content">
        <div class="tab-pane fade in active form-horizontal" id="basic">
            @Html.EditorFor(m => m.ReferralHistoryDetail)
        </div>
    </div>

    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Save" class="btn btn-default" />
        </div>
    </div>

}
@使用(Html.BeginForm(“保存”、“主页”)){
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@EditorFor(m=>m.ReferralHistoryDetail)
}
传递给控制器POST方法的值为NULL。默认模型绑定器无法绑定此值。

我解决了此问题

问题是
Html.BeginForm()
在主视图中,但它只是从
EditorFor()
中发回内容


我必须更改我的控制器以接收主视图的对象,而不是
EditorFor()
正在处理的对象,因为
Html.BeginForm()
位于主视图上。

很可能是因为HistoryDetail与类名ReferralHistoryDetail不匹配。您不需要HistoryDetail或ReferralHistoryDetail。只需
name=“[0]。ReferralTypeID”
等即可。我正在为此模型使用EditorTemplate,并通过EditorFor()显示它.MVC正在控制其余部分。视图中的
@model
定义是什么?@model ReferralHistoryDetail…这在父视图的编辑器模板中显示,父视图将此列表作为名为HistoryDetail的属性进行建模,我认为这可能是问题所在。它是否由于类名不同而没有映射?HTML表单没有不涉及家长,只涉及这个子列表。