MVC Edit方法将字段重置为默认值

时间:2014-08-16 18:51:13

标签: asp.net-mvc default-value

我有一个包含以下属性的客户模型: Id,Name和AccountBalance。

客户可以注册一个帐户,但无法指定他的AccountBalance(我没有在create method参数中包含它

    public ActionResult Create([Bind(Include="Id,Name")] Customer customer)

我在View方法中添加了一个HiddenFor:

    @Html.HiddenFor(model => model.AccountBalance)

一切正常,客户可以创建帐户,帐户余额默认为0。

编辑客户帐户时出现问题。我不希望客户能够编辑他的帐户余额,所以我也从编辑方法中省略了它并在编辑方法的视图中添加了隐藏。例如,当我编辑客户的名称时,AccountBalance将重置为0。

如何拒绝用户更改AccountBalance,但是MVC没有将值重置为0?

提前致谢。

2 个答案:

答案 0 :(得分:1)

Stephen Muecke 的第一个建议对我有用。还没试过第二个。

控制器

public ActionResult Edit([Bind(Include="Id,Name,AccountBalance")] Customer customer)

然后在 查看

@Html.HiddenFor(model => model.AccountBalance)

希望这对其他人有帮助并且有效! :)

答案 1 :(得分:0)

结束了Stephen Meucke的建议:

    var original = db.Customers.FirstOrDefault(x => x.Id == customer.Id);
    customer.AccountBalance= original.AccountBalance;

    db.Entry(original).CurrentValues.SetValues(customer);

    db.SaveChanges();

非常感谢!