asp.net - como faço para determinar qual caixa de seleção correlaciona-se com cada linha (usuário)

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

  •  06-07-2019
  •  | 
  •  

Pergunta

Eu estou usando asp.net MVC. I geraram uma visão que recuperar todos os usuários não aprovados na tabela de associação asp.net. Eu coloquei caixas de seleção ao lado deles para alguém para abrir uma vista. O objetivo é que alguém deveria ser capaz de verificar certas caixas, bateu salvar e que vai voltar a associação asp.net e mudar a bandeira IsApprove a verdade para esses usuários.

Como faço para extrair o que campos são definidos como verdadeiro quando estou na classe controlador?

aqui é o código da vista:

<% 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" /><% } %>

Aqui está o código controlador:

    [AcceptVerbs(HttpVerbs.Post)]
    public void ApproveUsers(FormCollection formCollection)
    {
        Console.Write("I have not idea how i can determine which checkboxes are checked");
    }
Foi útil?

Solução

Primeiro de tudo, ter cuidado com Html.Checkbox (). Ele não apenas tornar uma opção, mas um campo escondido bem. Cada usuário (como "username1" neste caso) terá a seguinte prestados:

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

Este questão e selecionados discus resposta -lo em mais detalhes. Uma opção é apenas escrever o html-se para isso, tais como:

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

Quando isso é postado para o seu controlador, é possível recuperá-la por Request.Form[member.Username]. Se for nulo, a caixa não foi verificada. Se ele tem um valor de "On", foi.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top