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);
}