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表单没有不涉及家长,只涉及这个子列表。