ASP .Net日期字段值在每次编辑时重置

时间:2015-08-27 11:10:31

标签: c# asp.net

在我的ASP .Net项目中,我的模型上有以下属性:

[DataType(DataType.Date)]
public Nullable<System.DateTime> dt_ent { get; set; }

enter image description here

在视图中,@Html.EditorFor显示日期选择器就像我想要的那样。

我的问题是,每次编辑项目时,该字段都会重置,如下图所示。

enter image description here

这种行为的可能原因是什么,用户每次编辑相关项目时都会删除日期,这是不方便的。

如果我将[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");

            }

    }

1 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为您的日期选择器每次进行编辑时都会发出“回复”。

因此,用户进行编辑,回发,日期选择器重置。你必须确保你没有尝试使用

在初始版本之后制作和回发
if(!isPostBack)
{
}

使用page_load()方法。

修改:

添加控制器后,似乎要避免此问题,您必须将此控制器设为async控制器。

请参阅以下内容获取指导:Async calls guide