【发布时间】:2012-01-09 05:53:53
【问题描述】:
我们的数据库中有一个字段确实应该是布尔值,但出于某种原因,最初的开发人员将其设置为 CHAR,将设置为“1”或“0”。
[Column("CHARGEABLE")]
[StringLength(1)]
private string Chargeable { get; set; }
我希望我的模型将此字段表示为布尔值,所以我想我可以向我的模型添加一个属性来包装它:
[NotMapped]
public bool ChargeableTrue
{
get
{
return Chargeable == "1" ? true : false;
}
set
{
Chargeable = value ? "1" : "0";
}
}
现在在我的视图上我只显示 EditorFor ( ChargeableTrue ),但是当我点击保存时它实际上并没有更新它。
我认为正在发生的事情是,当模型被更新时,它仍然试图从视图中获取“Chargeable”的值,即使我没有在那里显示它。而且由于没有输入字段,它只是变为 null 并最终将其保存到数据库中。
if (ModelState.IsValid)
{
db.Entry(call).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
在这种情况下人们应该做什么?
【问题讨论】:
标签: asp.net-mvc entity-framework