我在一个页面上有一个文本框,用于添加联系人详细信息,例如姓名,地址,电话号码和电子邮件地址。我想将修改的字段以及修改用户的名称和时间保存到数据库表中。假设如果我更改电话号码,那么应将提交的电话号码保存到数据库中。如何获取修改后的字段名称并保存到数据库中。
型号:
public partial class Log
{
public int ID { get; set; }
public string UserName { get; set; }
public string ModeifiedField { get; set; }
public Nullable<System.DateTime> Date { get; set; }
}
控制器:
private readonly LogEntities _db = new LogEntities();
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(Log model)
{
if (ModelState.IsValid)
{
_db.UserActivityLogs.Add(model);
_db.Entry(model).State = EntityState.Added;
_db.SaveChanges();
}
return RedirectToAction("Index");
}
查看:
@model Sample.Models.Log
@{
ViewBag.Title = "Index";
}
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
<form>
@Html.AntiForgeryToken()
@Html.HiddenFor(model => model.Date, new { @Value = @DateTime.Now.ToShortDateString()})
@Html.HiddenFor(model => model.UserName, new { @Value = @User.Identity.Name })
@Html.HiddenFor(model => model.ModifiedField, new { @Value = @ViewBag.ModifiedField, })
<br />
<br />
<p>@Html.TextBoxFor(model => model.Name)</p>
<p>@Html.TextBoxFor(model => model.Address)</p>
<p>@Html.TextBoxFor(model => model.PhoneNumber)</p>
<p>@Html.TextBoxFor(model => model.Emailaddress)</p>
<button type="submit" title="Submit">Upload Image</button>
@ViewBag.Message
</form>
}
答案 0 :(得分:0)
您可以创建触发器。
请参阅documentation for columns updated。
您将必须在要跟踪其更新列的表上创建触发器。
然后,触发器将为您提供更新列的列表,您可以将其保留在某些元数据表中(或返回到代码-根据您的要求)。
希望这会有所帮助。
答案 1 :(得分:0)
使用以下方法只能检查和更新数据库中的记录,以便仅更改字段:
private readonly LogEntities _db = new LogEntities();
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(Log model)
{
if (ModelState.IsValid)
{
var existingLog = _db.UserActivityLogs.Where(x => x.ID == model.ID).FirstOrDefault();
if (existingLog == null) //Create Case
{
_db.UserActivityLogs.Add(model);
_db.Entry(model).State = EntityState.Added;
_db.SaveChanges();
}
else //Update Case
{
_db.UserActivityLogs.Attach(model);
//Check for each property and set the IsModified flag to true only for updated records
if (model.UserName != existingLog.UserName)
{
_db.Entry(model).Propert(x=> x.UserName).IsModified = true;
}
_db.SaveChanges();
}
}
return RedirectToAction("Index");
}