仅更新没有隐藏字段的更改字段
本文关键字:字段 隐藏 更新 | 更新日期: 2023-09-27 18:35:59
我只需要更新数据库中的一个字段,即表单中的名称。我使用隐藏字段来更新/保留其余字段的值。这是我的观点
@using (Ajax.BeginForm("ChangeHeaderName", "Rooms",
new AjaxOptions
{
InsertionMode = InsertionMode.Replace,
HttpMethod = "Post",
OnSuccess = "OnSuccess",
OnFailure = "OnFailure"
}))
{
@Html.AntiForgeryToken()
@Html.HiddenFor(model => model.RoomId)
@Html.HiddenFor(model => model.RoomLink)
@Html.HiddenFor(model => model.Alias)
<div class="room-header-container">
<h2>@Html.EditorFor(m => m.Name, new { htmlAttributes = new { @id = "room-header", @class = "edit-header" } })</h2>
</div>
}
对我不想更新的每个字段使用 @Html.HiddenFor
感觉很愚蠢。
这是我的控制器
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult ChangeHeaderName(Room room)
{
if (ModelState.IsValid)
{
db.Entry(room).State = EntityState.Modified;
db.SaveChanges();
return PartialView("_UpdateHeader", room);
}
return View(room);
}
有没有更好的解决方案没有隐藏文件?
编辑/更新
我的模型中有这个
public int RoomId { get; set; }
public string Name { get; set; }
public Guid RoomLink { get; set; }
public bool UseAlias { get; set; }
public string Alias { get; set; }
public DateTime Created { get; set; }
我想向用户显示所有这些,但用户应该只能编辑Name
如果我创建一个只有Name
的ViewModel
public string Name { get; set; }
我不能显示其余的。我想显示所有更新Name
在这里找到解决方案:https://stackoverflow.com/a/23380525/5369591
if (ModelState.IsValid)
{
db.Registrations.Attach(registration); // attach in the Unchanged state
db.Entry(registration).Property(r => r.Date).IsModified = true;
// Date field is set to Modified (entity is now Modified as well)
db.SaveChanges();
return RedirectToAction("Index");
}
是的,您可以为所有要忽略的字段放置禁用属性。
使用Jquery,你可以这样做
$(document).ready(function(){
$('input[type="hidden"]').attr("disabled","disabled");
})