asp.net-各行(ユーザー)に相関するチェックボックスを決定する方法

StackOverflow https://stackoverflow.com/questions/1214503

  •  06-07-2019
  •  | 
  •  

質問

asp.net mvcを使用しています。 asp.netメンバーシップテーブル内のすべての未承認ユーザーを取得するビューを生成しました。誰かがビューを表示できるように、それらの横にチェックボックスを配置しました。目標は、誰かが特定のチェックボックスをチェックし、保存をクリックすると、asp.netメンバーシップに戻り、これらのユーザーのIsApproveフラグをtrueに変更できるようにすることです。

コントローラークラスにいるときにtrueに設定されているフィールドを抽出するにはどうすればよいですか

ビューコードは次のとおりです。

<% using (Html.BeginForm()) {%>
<table id="hor-zebra" border = 2>
<tr><td>User</td><td>Approve</td>
</tr>
<%
    MembershipUserCollection membership = (MembershipUserCollection)ViewData["UnapprovedUsers"];
    foreach (MembershipUser member in membership)
     {
        %><tr><td>
        <%=Html.Encode(member.UserName) %> </td><td>
        <%= Html.CheckBox("Approve:" + member.UserName, false) %>
        </td></tr>
  <%
     }
%>
</table>
<input type="submit" value="Save" /><% } %>

コントローラーコードは次のとおりです。

    [AcceptVerbs(HttpVerbs.Post)]
    public void ApproveUsers(FormCollection formCollection)
    {
        Console.Write("I have not idea how i can determine which checkboxes are checked");
    }
役に立ちましたか?

解決

まず、Html.Checkbox()に注意してください。チェックボックスだけでなく、非表示フィールドもレンダリングします。各ユーザー(この場合は&quot; username1&quot;など)には以下が表示されます:

<input id="Approve: username1" name="Approve: username1" type="checkbox" value="true"/>
<input name="Approve: username1" type="hidden" value="false" />

この質問と選択された回答さらに詳細に。 1つのオプションは、次のように、このために自分でhtmlを記述することです。

<input type="checkbox" name="<%=member.UserName%>" />

これがコントローラーに投稿されると、 Request.Form [member.Username] で取得できます。 nullの場合、ボックスはチェックされていません。値が&quot; On&quot;の場合は、そうでした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top