CSHTML,使用EditorFor更改值,不希望显示旧值?

时间:2016-06-21 20:04:51

标签: asp.net-mvc razor

如果这个问题不清楚或者我没有提供足够的信息,我很抱歉,我是CSHTML的新手,并且不知道我是否遗漏了一些非常明显的东西。

我目前在我的视图中有一个EditorFor(),用于更改数据库中特定userCard字段的密码。当更改此密码时,我希望文本框为空,但每次显示旧值。在编辑之前删除值不是一个选项,因为我的页面有太多选项供用户转到其他页面并让帐户无密码。有什么帮助吗?

违规的EditorFor如下:

<div class="form-group">
            <div class="col-md-10">
                <h5>Enter a New Passcode</h5>
            </div>
            <div class="col-md-10">
                @Html.EditorFor(model => model.userCard.password, new { htmlAttributes = new { @class = "form-control"} })
                @Html.ValidationMessageFor(model => model.userCard.password, "", new { @class = "text-danger" })
            </div>
        </div>

此视图的控制器方法如下:

    public ActionResult EditPasscode(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }

        UserCardOBJ userCardOBJ = new UserCardOBJ();
        userCardOBJ.userCard = db.UserCards.Find(id);

        if (userCardOBJ.userCard == null)
        {
            return HttpNotFound();
        }
        return View(userCardOBJ);
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult EditPasscode([Bind(Include = "ID,password")] UserCard userCard)
    {

        if (ModelState.IsValid)
        {
            //db.Entry(userCard).State = EntityState.Modified;
            db.UserCards.Attach(userCard);
            db.Entry(userCard).Property(model => model.password).IsModified = true;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(userCard);
    }

1 个答案:

答案 0 :(得分:0)

您可以为传入的htmlAttribute匿名类型添加value属性。

@Html.EditorFor(model => model.userCard.password, new { @class = "form-control", @value = "" } })