2009-01-22 12 views
5

me había mostrado casilla de verificación en una lista y quiero acceder a aquello que la casilla de verificación está seleccionada o no y quiere llamar a la acción del controlador cuando selecciono la opción de la lista desplegableobtener el valor casilla seleccionada en asp.net mvc

<div id="pnlSent" style="display: none"> 
      <%= Html.DropDownList("select","msgtype") %> 
      <% foreach (Usp_GetUserMessagesResult w in (List<Usp_GetUserMessagesResult>)ViewData["UListM"]) 
       { %> 
       <li> 
      <div class="question-info"> 

       <input id="Checkbox1" type="checkbox" onclick="function() { alert("df") ; } " /> 

       <div class="views count"><span></span></div> 
       <div class="question"> 
        <div class="meta">Subject: <%= w.Subject %></div> 
        <div class="meta">To: <%= w.Username %></div> 
        <h3 class="title"><%= Html.Encode(w.Mesg)%></h3> 
       </div> 
      </div> 
     </li> 
      <% } %> 

    </div> 

Respuesta

-1

Puede recorrer todos los controles del div dividen y si el tipo de control es una casilla de verificación puede determinar si la casilla de verificación está marcada.

Ejemplo de bucle a través de los controles en VB ....

For Each ctrl As Control In Page.Controls 
     If TypeOf ctrl Is TextBox Then 
      CType(ctrl, TextBox).BackColor = clr 
     Else 
      If ctrl.Controls.Count > 0 Then 
       SetTextBoxBackColor(ctrl, clr) 
      End If 
     End If 
    Next 
2

en asp.net MVC debe haber existido la información que desea ser capaz de acceder en el lado del controlador en una forma que por lo , me di cuenta de que no agrega una identificación a su casilla de verificación, la mía binded de forma dinámica y estoy usando el asistente de HTML que viene con asp.net-mvc:

<% using(Html.BeginForm("Retrieve", "Home")) %>//Retrieve is the name of the action while Home is the name of the controller 
    <% { %> 
     <%foreach (var app in newApps)    { %> 
     <tr> 
      <td><%=Html.CheckBox(""+app.ApplicationId)%></td>  

     </tr> 
    <%} %> 
    <input type"submit"/> 
<% } %> 

a continuación en el controlador se podría tener acceso a la información como esto:

public ActionResult Retrieve() 
    { 
    //since all variables are dynamically bound you must load your DB into strings in a for loop as so: 
    List<app>=newApps; 
    for(int i=0; i<app.Count;i++) 
    { 


    var checkbox=Request.Form[""+app[i].ApplicationId]; 
    // the reason you check for false because the Html checkbox helper does some kind of freaky thing for value true: it makes the string read "true, false" 
     if(checkbox!="false") 
     { 
     //etc...almost same for other parameters you want that are in thr form 
     } 

    } 
//of course return your view 
return View("Index");//this vaires by the name of your view ex: if Index.aspx 
    } 

Este sitio da más detalles sobre cómo comprobar la información en el controlador como controles se manejan en la vista: http://quickstarts.asp.net/previews/mvc/mvc_HowToRenderFormUsingHtmlHelpers.htm

1

Si usted está planeando enviar este formulario, y hacer cualquier cosa con la casilla de verificación de los valores en el lado del servidor, querrá darles los atributos y valor (y el nombre debe ser el mismo para cada casilla del grupo). El asistente de casilla de verificación que TStamper mencionó se encarga de eso por usted.

Si lo que desea es una acción del cliente a suceder cuando la casilla de verificación está marcada o sin marcar, se puede hacer algo como esto (estoy asumiendo que estos objetos tienen algún tipo de campo de clave, yo estoy llamando de identificador de mensaje):

<script type="text/javascript"> 
function handleCheckbox(theBox) { 
    if(theBox.checked) { 
    // do checked stuff 
    } 
    else { 
    // do un-checked stuff 
    } 
} 
</script> 

... 

<input type="checkbox" value="<%= w.MessageID %>" onclick="handleCheckbox(this)" /> 

Tenga en cuenta que Identificación valores están obligados a ser únicos dentro de un documento HTML. Por lo tanto, crear muchas casillas de verificación con el ID "Checkbox1" no es una buena idea. (Si ese elemento de entrada fuera runat = "server", entonces .NET generaría un HTML único id de los WebForms ID.

Cuestiones relacionadas