none
Enviar a mi controlador un post de una lista de for each RRS feed

  • Pregunta

  • Hola  Buenas tardes a esta gran comunidad:

    Mi pregunta es tengo una vista generada con un for each lo que deseo es enviarlo mediante post el modelo a una action dependiendo del boton  de la lista que escoja para enviar(ya que el for each me generara varias filas y cada una de esas filas tiene un boton enviar).

    lo estaba haciendo así pero me envía vacio al controlador  ¿Alguna posible solucion ?

    @using System.Web.Optimization;
    
    @model IEnumerable<APP.Modelo.mail_Per>
    @{
        ViewBag.Title = "titulo";
    }
    
    <div class="wrapper wrapper-content">
        <div class="row">
    
    
            <div class="col-lg-9 animated fadeInRight">
    
                @{using (Ajax.BeginForm("RedactarMensaje", "Mensaje", new AjaxOptions() { @HttpMethod = "POST" }))
                    {
                        foreach (APP.Modelo.mail_Per mail in Model)
                        {
    
                                @Html.HiddenFor(model => mail.mailAPP)
                                @Html.HiddenFor(model => mail.IdObj)
                                @Html.HiddenFor(model => mail.Asunto)
    								
                                <div class="mail-box-header">
    							
                                    <div class="pull-right tooltip-demo">
                                        <table>
                                            <tr>
                                                <td>
                                                    <button type="button" id="MostrarRespuesta" class="btn btn-white btn-sm" data-toggle="tooltip" data-placement="top" title="Responder"><i class="fa fa-reply"></i> Responder</button> 
                                                </td>                           
                                            </tr>
                                        </table>									
                                    </div>
    
                                    <div class="mail-tools tooltip-demo m-t-md">
                                        <h3>
                                            <span class="font-normal">Asunto: </span>@mail.Asunto
                                        </h3>
    
                                        <h5>
                                            <span class="font-normal">De: </span>@mail.mailAPP
                                        </h5>
                                    </div>
    								
                                </div>
    
                                <div class="mail-box">
    							
                                    <div class="mail-body">
                                        <p>
                                            @Html.TextBoxFor(mail.Mensaje)
                                        </p>
                                    </div>
    								
                                    <div id="IdMensajeRespuesta" hidden="hidden">
                                        <div class="mail-text h-200" id="RespuestaMensaje">
                                            @Html.TextBoxFor(model => mail.MensajeRespuesta, new { @class = "form-control" })
                                            <div class="clearfix"></div>
                                        </div>
                                        <div class="mail-body text-right tooltip-demo">
    
                                            <button type="submit" id="Enviar" class="btn btn-sm btn-primary" data-toggle="tooltip" data-placement="top" title="Enviar"><i class="fa fa-reply"></i> Enviar</button>
                                        </div>
                                        <div class="clearfix"></div>
                                    </div>
    
                                </div>
    
    
                        } 
    
    
                    }
                }
            </div>
    		
    		
        </div>
    </div>
    
    
    
    @section Scripts {
    
        <script type="text/javascript">
    
            $(document).ready(function () {
                $("#MostrarRespuesta").click(function () {
                    $('#IdMensajeRespuesta').show();
                });
    
            });
    
    
    
        </script>
    }
    

    jueves, 4 de octubre de 2018 23:41

Respuestas

  • hola

    haya varias formas de hacerlo

     ASP.Net MVC - How to Post a Collection

    en este aso veras que usa el Html.DisplayFor() puede ser el TextBoxFor() si lo quieres

    for (int i = 0; i < Model.Tweets.Count; i++)
                    {
                   
                    <tr style="vertical-align: top">
                        <td style="font-size: 12px; padding-left: 2px">
                            @Html.DisplayFor(modelItem => Model.Tweets[i].Date) -
                            @Html.DisplayFor(modelItem => Model.Tweets[i].UserName) :
                        </td>
    

    pero la idea es ir pasando cada item del array cuando iteras

    Model Binding to List of Objects in ASP.NET MVC

    otra forma sin usar el For del helper

    pero veras que basicamente debes conseguir que el name de cada control dentro del loop sea un array

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta DevMuse sábado, 6 de octubre de 2018 5:23
    viernes, 5 de octubre de 2018 4:08

Todas las respuestas

  • hola

    haya varias formas de hacerlo

     ASP.Net MVC - How to Post a Collection

    en este aso veras que usa el Html.DisplayFor() puede ser el TextBoxFor() si lo quieres

    for (int i = 0; i < Model.Tweets.Count; i++)
                    {
                   
                    <tr style="vertical-align: top">
                        <td style="font-size: 12px; padding-left: 2px">
                            @Html.DisplayFor(modelItem => Model.Tweets[i].Date) -
                            @Html.DisplayFor(modelItem => Model.Tweets[i].UserName) :
                        </td>
    

    pero la idea es ir pasando cada item del array cuando iteras

    Model Binding to List of Objects in ASP.NET MVC

    otra forma sin usar el For del helper

    pero veras que basicamente debes conseguir que el name de cada control dentro del loop sea un array

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta DevMuse sábado, 6 de octubre de 2018 5:23
    viernes, 5 de octubre de 2018 4:08
  • Hola, has probado en crear un "form" en cada pasada del "foreach"?. Cambia el orden de las sentencias

     @{foreach (APP.Modelo.mail_Per mail in Model)
       {
    using (Ajax.BeginForm("RedactarMensaje", "Mensaje", new AjaxOptions() { @HttpMethod = "POST" }))
         {
                        


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    viernes, 5 de octubre de 2018 23:14
    Moderador
  • Gracias Leandro por la respuesta, el segundo link me sirve perfecto.
    sábado, 6 de octubre de 2018 5:34
  • Hola, has probado en crear un "form" en cada pasada del "foreach"?. Cambia el orden de las sentencias

     @{foreach (APP.Modelo.mail_Per mail in Model)
       {
    using (Ajax.BeginForm("RedactarMensaje", "Mensaje", new AjaxOptions() { @HttpMethod = "POST" }))
         {
                        


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    Si lo implemente de esa forma pero el resultado fue el mismo, es decir, enviaba null al controlador.

    Igual gracias por responder.

    sábado, 6 de octubre de 2018 5:39