我只想更新状态和国家属性,因此希望阻止在编辑时更新签名属性。
这是我的Model类
public class Currency{
[Required]
public int Id{ get; set;}
[Required]
public string Sign { get; set; }
[Required]
public string Country { get; set; }
[Required]
public int Status{get;set;}
}
这是控制器中的默认Edit方法:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "Id,Sign,Country,Status")] Currency currenc)
{
if (ModelState.IsValid)
{
db.Entry(currenc).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(currenc);
}
答案 0 :(得分:1)
编写Edit方法,如下所示:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "Id,Sign,Country,Status")] Currency currenc)
{
if (ModelState.IsValid)
{
db.Entry(currenc).State = EntityState.Modified;
// Sign Property wouldn't be updated
db.Entry(currenc).Property(x => x.Sign).IsModified = false;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(currenc);
}
答案 1 :(得分:0)
您可以从数据库加载对象,仅更新已更改的属性或您想要更改的属性并将其保存回数据库。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(Currency currency)
{
if (ModelState.IsValid)
{
var record = db.Currencies.Find(currency.Id);
if(record != null)
{
record.Status = currency.Status;
record.Country = currency.Country;
db.SaveChanges();
}
return RedirectToAction("Index");
}
return View(currenc);
}