我似乎无法在这里找到问题。真的卡住了,需要帮助。我使用Html.BeginForm,里面我有editorFor - model.DOB。使用post方法但不知何故它不会将属性发送回我的控制器。帮忙。我有其他字符串属性字段,正在向控制器发送。只有日期属性不发送。 TQVM提前。
---------编辑---------
刚刚发现如果我使用Edge - 我需要使用dd / MM / yyyy格式。然后它会保存好。如果我使用MM / dd / yyyy,那么它将在控制器上给出null。
在Chrome上
使用dd / MM / yyyy - 给我'该字段必须是日期'错误
使用MM / dd / yyyy - 给我null。
---------编辑---------
模型
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
[Display(Name = "Date of Birth")]
public DateTime? PersonDOB { get; set; }
查看
@model Models.CorporationModel
using (Html.BeginForm("Edit", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div>
<div class="form-group">
@Html.LabelFor(model => model.PersonDOB, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.PersonDOB, new { htmlAttributes = new { @class = "form-control", placeholder = "Format: 06/31/1998" } })
@Html.ValidationMessageFor(model => model.PersonDOB, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Save" class="btn btn-default" name="action:PersonalSave" />
<input type="submit" value="Reprocess" class="btn btn-default" onclick="return confirm('Are you sure?')" name="action:PersonalReprocess" />
</div>
</div>
</div>
}
控制器
[HttpPost]
[MultipleButton(Name = "action", Argument = "PersonalReprocess")]
public ActionResult PersonalReprocess(int id, CorporationModel corporationModel, HttpPostedFileBase postedResultFile, HttpPostedFileBase postedPersonalFile)
{
corporationModel.Verified = "Processing";
return UpdatePersonal(id, corporationModel, postedResultFile, postedPersonalFile);
}
如果我删除
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
我得到'该字段必须是日期错误'。如果我手动在月份和日期之间切换,那么它可以毫无问题地保存。但是,当它从数据库中拉出时,它将以dd / mm / yyyy开始,然后单击“保存”将再次发出“该字段必须是日期错误”,因此需要手动切换。