C# 更改控制器中不同数据库表中的字段
我正在使用一个编辑用户视图,其中包括C# 更改控制器中不同数据库表中的字段,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我正在使用一个编辑用户视图,其中包括名字、姓氏、用户名等。 我还将成员资格表中的IsApproved和IsLockedOut合并到此编辑用户视图中 请参阅代码片段: //Username from User table <div class="editor-label"> @Html.LabelFor(model => model.UserName) </div> <div class="editor-field"> @Html.Disp
名字、姓氏、用户名等。
我还将成员资格表中的IsApproved
和IsLockedOut
合并到此编辑用户视图中
请参阅代码片段:
//Username from User table
<div class="editor-label">
@Html.LabelFor(model => model.UserName)
</div>
<div class="editor-field">
@Html.DisplayFor(model => model.UserName)
@Html.ValidationMessageFor(model => model.UserName)
</div>
//IsApproved from Membership table
<div class="editor-label">
@Html.LabelFor(model => model.aspnet_Membership.IsApproved)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.aspnet_Membership.IsApproved)
@Html.ValidationMessageFor(model => model.aspnet_Membership.IsApproved)
</div>
我将创建一个具有所有所需属性的模型,以便您可以在视图中使用它。然后可以在不同的表之间分离数据操作
public ActionResult Edit(int id)
{
User user = db.Users.Single(u => u.UserID == id);
UserViewModel model = new UserViewModel()
{
UserID = user.UserID,
//etc.
}
ViewBag.UserGUID = new SelectList(db.Memberships, "UserId", "Password", user.UserGUID);
ViewBag.CompanyID = new SelectList(db.Companies, "CompanyID", "CompanyName", user.CompanyID);
return View(model);
}
public ActionResult Edit(UserViewModel userModel)
{
if (ModelState.IsValid)
{
// Update user properties
User user = db.Users.Single(u => u.UserID == userModel.UserID);
// etc.
// If you need to update the membership value, do that next
db.SaveChanges();
}
ViewBag.UserGUID = new SelectList(db.Memberships, "UserId", "Password", user.UserGUID);
ViewBag.CompanyID = new SelectList(db.Companies, "CompanyID", "CompanyName", user.CompanyID);
return View(user);
}
它在代码中并不像执行Attach()那样短,但它应该允许对数据操作进行更细粒度的控制。尝试同时附加成员身份对象。它将附加代码以显示这方面的进展。请参阅更新。我将您的逻辑用于HttpPost,它运行得非常好。谢谢
public ActionResult Edit(int id)
{
User user = db.Users.Single(u => u.UserID == id);
UserViewModel model = new UserViewModel()
{
UserID = user.UserID,
//etc.
}
ViewBag.UserGUID = new SelectList(db.Memberships, "UserId", "Password", user.UserGUID);
ViewBag.CompanyID = new SelectList(db.Companies, "CompanyID", "CompanyName", user.CompanyID);
return View(model);
}
public ActionResult Edit(UserViewModel userModel)
{
if (ModelState.IsValid)
{
// Update user properties
User user = db.Users.Single(u => u.UserID == userModel.UserID);
// etc.
// If you need to update the membership value, do that next
db.SaveChanges();
}
ViewBag.UserGUID = new SelectList(db.Memberships, "UserId", "Password", user.UserGUID);
ViewBag.CompanyID = new SelectList(db.Companies, "CompanyID", "CompanyName", user.CompanyID);
return View(user);
}