[英]Empty POST model argument when using EditorFor
I am trying to submit a form that incorporates an @Html.EditorFor
element. 我正在尝试提交包含
@Html.EditorFor
元素的表单。 If I remove the EditorFor
element, my POST controller argument passes data correctly, but once implemented, my entire model argument shows as null
in the POST controller. 如果删除了
EditorFor
元素,则POST控制器参数将正确传递数据,但是一旦实现,我的整个模型参数在POST控制器中将显示为null
。
Here's the model I'm trying to pass: 这是我要传递的模型:
public class Checkout
{
public int CheckoutID { get; set; }
public string Requestor { get; set; }
public DateTime? DateRequested { get; set; }
public List<CheckoutReceiver> Receivers { get; set; }
}
The form element on page: 页面上的表单元素:
@model PRI.Models.Checkout
@using (Html.BeginForm("CreateCheckout", "API/CheckoutRequest", FormMethod.Post, new { id = "pri-form" }))
{
<div id="checkout-request">
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div id="checkout-info" class="form-horizontal">
<div class="form-group">
<div class="col-md-12">
@Html.TextBoxFor(m => m.CheckoutID)
</div>
</div>
<div class="form-group">
<div class="col-md-12">
@Html.EditorFor(m => m.Receivers)
</div>
</div>
<div class="form-group">
<div class="col-md-12">
<input id="create-checkout-submit" type="submit" value="Confirm transfer" class="btn btn-danger right" style="margin: 10px;" />
</div>
</div>
</div>
</div>
}
If I remove the @Html.EditorFor(m => m.Receivers)
, and add data to the @Html.TextBoxFor(m => m.CheckoutID)
then that passes correctly to my Post Controller, so obviously my EditorFor is messing things up: 如果我删除
@Html.EditorFor(m => m.Receivers)
,并将数据添加到@Html.TextBoxFor(m => m.CheckoutID)
那么它将正确传递给我的Post Controller,所以显然我的EditorFor搞砸了上:
Here's the POST controller (i put a breakpoint right after it enters this so I can check the checkout
argument): 这是POST控制器(我在输入此命令后立即放置一个断点,以便可以检查
checkout
参数):
[System.Web.Http.HttpPost]
[ValidateAntiForgeryToken]
[System.Web.Http.ActionName("CreateCheckout")]
public Checkout Create(Checkout checkout)
{
var request = new Checkout();
return request;
}
Here's my CheckoutReceiver Editor template (removed some input elements for brevity): 这是我的CheckoutReceiver编辑器模板(为简洁起见删除了一些输入元素):
@model PRI.Models.CheckoutReceiver
@using (Html.BeginCollectionItem("Receivers"))
{
<div class="form-horizontal">
@Html.HiddenFor(model => model.ID)
@Html.HiddenFor(model => model.CheckoutID)
<h4 class="contact-header">@Model.ContactType</h4>
<div class="form-group">
<div class="col-md-5">
<span class="form-header">Last Name</span>
@Html.TextBoxFor(model => model.LastName, new { @class = "box-customer form-control ignore", placeholder = "Last name" })
</div>
<div class="col-md-5">
<span class="form-header">First Name</span>
@Html.TextBoxFor(model => model.FirstName, new { @class = "form-control ignore", placeholder = "First name" })
</div>
<div class="col-md-2">
<span class="form-header">Middle Initial</span>
@Html.TextBoxFor(model => model.MiddleInitial, new { @class = "form-control ignore", placeholder = "M.I." })
</div>
</div>
</div>
}
Where am I going wrong, and why is my EditorFor
causing my Checkout
POST argument to be null on submit? 我在哪里出错,为什么我的
EditorFor
导致我的Checkout
POST参数在提交时为null?
Thanks! 谢谢!
Maybe you should check this question . 也许你应该检查这个问题 。 You should add an editor for an
您应该为
IEnumerable<CheckoutReceiver>
instead of an editor for CheckoutReceiver
. IEnumerable<CheckoutReceiver>
代替用于编辑CheckoutReceiver
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.