在我的ASP .Net项目中,我的模型上有以下属性:
[DataType(DataType.Date)]
public Nullable<System.DateTime> dt_ent { get; set; }
在视图中,@Html.EditorFor
显示日期选择器就像我想要的那样。
我的问题是,每次编辑项目时,该字段都会重置,如下图所示。
这种行为的可能原因是什么,用户每次编辑相关项目时都会删除日期,这是不方便的。
如果我将[DataType(DataType.Date)]
更改为[DataType(DataType.DateTime)]
该值未重置,但选择器已消失。
我该怎么办才能解决这个问题?
修改
该字段的html代码:
<div class="form-group">
@Html.LabelFor(model => model.dt_ent, "Date Ent", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.dt_ent, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.dt_ent, "", new { @class = "text-danger" })
</div>
</div>
控制器:
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Process process = db.Process.Find(id);
if (process == null)
{
return HttpNotFound();
}
return View(process);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "id,dt_ent")] Process process)
{
if (ModelState.IsValid)
{
db.Entry(process).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
}
答案 0 :(得分:0)
这种情况正在发生,因为您的日期选择器每次进行编辑时都会发出“回复”。
因此,用户进行编辑,回发,日期选择器重置。你必须确保你没有尝试使用
在初始版本之后制作和回发if(!isPostBack)
{
}
使用page_load()
方法。
修改:
添加控制器后,似乎要避免此问题,您必须将此控制器设为async
控制器。
请参阅以下内容获取指导:Async calls guide