我是唯一一个有这个问题的人,还是我的方向完全错误。
我有一个传递 DateTime 值的视图:
<div class="control-group">
@Html.Label("Appointment date", null, new { @class = "control-label" })
<div class="controls">
<div class="input-append">
@Html.TextBoxFor(model => model.Appointment.Client_PreferredDate, new { @readonly = "readonly" })
<span class="add-on margin-fix"><i class="icon-th"></i></span>
</div>
<p class="help-block">
@Html.ValidationMessageFor(model => model.Appointment.Client_PreferredDate)
</p>
</div>
这些值被传递到 Controller 操作中(我可以看到该值,并且我知道它给出的格式不是 DateTime,即它将采用 dd-MM-yyyy 格式)。然后在控制器中我将重新格式化它。
[HttpPost]
public ActionResult RequestAppointment(General_Enquiry model, FormCollection fc)
{
model.Appointment.Client_PreferredDate = Utilities.formatDate(fc["Appointment.Client_PreferredDate"]);
ModelState.Remove("Appointment.Client_PreferredDate");
try
{
if (ModelState.IsValid)
{
model.Branch_Id = Convert.ToInt32(fc["selectedBranch"]);
model.Appointment.Branch_Id = Convert.ToInt32(fc["selectedBranch"]);
db.General_Enquiry.AddObject(model);
db.SaveChanges();
return RedirectToAction("AppointmentSuccess", "Client");
}
}
catch (Exception e)
{
Debug.WriteLine("{0} First exception caught.", e);
Debug.WriteLine(e.InnerException);
ModelState.AddModelError("", e);
}
return View(model);
}
我能做的最好的就是使用 ModelState.Remove(),我对此感到非常不舒服。我怀疑当我的模型从视图传递到控制器时,模型状态已经设置为无效,然后我才能在控制器中执行任何操作。有任何想法吗?
如果我调用 ModelState.Remove() 一切顺利,则 SQL 服务器数据库接受 DateTime。
如果至少我可以随时更新或“刷新”ModelState,它将解决我的问题。
干杯。