Несколько действий (форм) на одной странице - Как не потерять основные данные после редактирования подробных данных? - PullRequest
0 голосов
/ 31 марта 2010

У меня есть форма, где пользователи могут редактировать членов группы.

Таким образом, у них есть возможность добавлять или удалять существующих участников. Таким образом, URL идет как "... / Group / Edit / 4", где 4 - идентификатор группы.

вид выглядит так

<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>

Проблема в том, что после добавления или удаления одного пользователя я теряю идентификатор группы. Как лучше всего решить эту проблему? Нужно ли использовать скрытые поля для сохранения идентификатора группы?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 31 марта 2010

Скрытые поля являются хорошим способом сохранения идентификатора во время публикации.

0 голосов
/ 31 марта 2010

Вы можете использовать скрытое поле или просто проанализировать значение в вашем маршруте. Я не уверен, как вы анализируете идентификатор группы для представления, но это будет выглядеть примерно так:

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

Тогда ваш контроллер будет выглядеть примерно так, используя шаблон PRG

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

Преимущество этого метода в том, что он более RESTful

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...