C# 一页上的多个操作(表格)-如何在编辑详细数据后不丢失主数据?

C# 一页上的多个操作(表格)-如何在编辑详细数据后不丢失主数据?,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个表单,用户可以在其中编辑组成员 因此,他们有可能添加成员或删除现有成员。所以Url是这样的 “../Group/Edit/4”,其中4是组的id 景色是这样的 <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <% using (Html.BeginForm("AddUser", "Group")) %> <%{%> <

我有一个表单,用户可以在其中编辑组成员

因此,他们有可能添加成员或删除现有成员。所以Url是这样的 “../Group/Edit/4”,其中4是组的id

景色是这样的

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<% using (Html.BeginForm("AddUser", "Group")) %>
    <%{%>
        <label for="newUser">User</label>
        <%=Html.TextBox("username")%>
        <input type="submit" value="Add"/>
    </div>
    <%}%>

    <% using (Html.BeginForm("RemoveUser", "Group")) %>
    <%{%>
    <div class="inputItem">
        <label for="groupMember">Bestehende Mitglieder</label>
        <%= Html.ListBox("groupMember", from g in Model.GetMembers() select new SelectListItem(){Text = g}) %>
        <input type="submit" value="Remove" />
    </div>
    <%}%>
</asp:Content>

使用者
贝斯特亨德·米格利德
问题是,在添加或删除一个用户后,我会丢失组的id。解决这类问题的最佳解决方案是什么? 我应该使用隐藏字段保存组id吗


提前感谢。

隐藏字段是在发布期间保留id的好方法。

您可以使用隐藏字段,也可以将值解析到路由中。我不确定您是如何将组id解析为视图的,但它看起来像:

<% using (Html.BeginForm("AddUser", "Group", new { groupId = Model.GroupID })) { %>

这种方法的优点是,它比我跳转到另一个视图要多得多,但我想留在编辑视图中,在那里我可以删除和添加members@nWorx您可以只返回“编辑”视图,但最好遵循PRG模式并重定向到“编辑”操作。我已经用PRG更新了我的答案。很酷,谢谢,这似乎是我一直在寻找的,我会检查它并给你反馈aww:-(现在如果用户名无效,我添加了ModelState.AddError(),我不会显示。但是如果我使用“返回视图(“编辑”,组)”显示错误…页面的概念是否如此错误?@nWorx如果表单有验证错误,则返回视图(“编辑”新建{GroupID=GroupID})。如果表单良好,则执行业务逻辑并返回重定向操作(“编辑”,新建{GroupID=GroupID})
[HttpGet]
public ViewResult Edit(int groupId) {
  //your logic here

  var model = new MyModel() {
    GroupID = groupId
  };
  return View("Edit", model);
}

[HttpPost]
public ActionResult AddUser(int groupId, string username) {
  //your logic here
  return RedirectToAction("Edit", new { GroupID = groupId });
}

[HttpPost]
public ActionResult RemoveUser(int groupId, string username) {
  //your logic here
  return RedirectToAction("Edit", new { GroupID = groupId });
}