¿Cómo pasar el Id de un item de una lista y pasarlo al controllador?

publicado por: Anonymous

Buenas gente el tema es así:

Tengo este método que trae la siguiente lista desde SQL:

public ActionResult Index()
{
    return View(db.ZService.ToList());
}

esta lista es llamada desde otra vista mediante Ajax:

<script type="text/javascript">
function GetAjax()
{
//toma la acción y el controllador donde se encuentra

    $.get('@Url.Action("Index","ZServices")', function (data) {
        $("#ajaxcontent").html(data);
    });
}
</script>

cada item de la lista tiene un botón “Agregar”, lo que quiero es que cuando presione ese botón pueda obtener el Id de ese item en particular y poder pasarlo al controllador para hacer una nueva consulta:

[HttpPost]
public ActionResult Agregar(string id)
{
    var q = (from g in db.ZService 
             join ga in db.ZServiceOptions on   
             g.serviceid equals ga.serviceid where ga.value == id /*aca iría el id que tomaría dinámicamente*/ 
             select g).ToList();

        //q.CommandType = CommandType.StoredProcedure;

        return View(q);
}

Esto seria la vista html de la lista con su botón

@foreach (var item in Model)
{
  <ul>
    <li>
        <span>@Html.DisplayFor(modelItem => item.name)</span>
        <a type="submit" class="btnagre" name="Guardar"
           value="Agregar">agregar</a> 
    </li>
  </ul>
}

¿Alguien tiene alguna idea?

solución

Lo que puedes hacer es enviar el id al Action Agregar de esta manera, reemplazando <a ...> ... </a> por lo siguiente:

Utilizando Html Helper

@Html.ActionLink("Guardar", "Agregar", new { id = item.Id },
                                       new { @class = "btnagre", @name = "Guardar" })

El html helper ActionLink() te permite pasar en su tercer parámetro los routeValues en el mismo puedes especificar los parámetros de una ruta, en tu caso el parametro del Action Agregar. Ver en MSDN

En el cuarto parámetro defines los htmlAttributes, como por ejemplo la clase CSS que utilizaría y que nombre o id tendrá ese link.

Sin utilizar Html Helper

<a href="~/TuController/Agregar/@item.Id" class="btnGrande" name="Guardar">Guardar</a>

Atención: No se como se llama tu contorller, en todo caso reemplaza en el href TuController por como se llame.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *