2010-03-31 2 views
0

사용자가 그룹의 회원을 수정할 수있는 양식이 있습니다.한 페이지에서 여러 작업 (양식) - 세부 데이터를 편집 한 후 마스터 데이터를 잃지 않으려면 어떻게해야합니까?

회원을 추가하거나 기존 회원을 삭제할 가능성이 있습니다. 따라서 URL은 ".../Group/Edit/4"와 같이 나타납니다. 여기서 4는 그룹의 ID입니다.

뷰 문제가 추가 또는 한 사용자를 제거한 후 내가 그룹의 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를 저장해야합니까?

미리 감사드립니다.

답변

0

숨겨진 필드를 사용하거나 값을 경로로 구문 분석 할 수 있습니다. 난 당신이보기에 그룹 ID를 분석하고 방법을 잘 모르겠어요하지만 같은 것을 보일 것이다

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

+0

흠 다른 뷰로 점프 하겠지만 편집 뷰에 머물러 있어야합니다. 여기서 멤버를 삭제하고 추가 할 수 있습니다. – nWorx

+0

@nWorx '편집' 따르기는하지만 더 좋습니다. PRG 패턴을 수정하고 '편집'작업으로 리디렉션하십시오. 나는 내 대답을 PRG를 사용하는 예제로 업데이트했다. –

+0

멋지게 고백 한 것 같습니다. 내가 확인하고 피드백을 드리겠습니다. – nWorx

1

숨겨진 필드는 게시물 중에 ID를 유지하는 좋은 방법입니다.

관련 문제