ASP.NET MVC pasando una ID en un ActionLink al controlador


98

No puedo ver para recuperar una ID que estoy enviando en un html.ActionLink en mi controlador, esto es lo que estoy tratando de hacer

<li>
    <%= Html.ActionLink("Modify Villa", "Modify", "Villa", new { @id = "1" })%></li>


    public ActionResult Modify(string ID)
    {

        ViewData["Title"] =ID;
        return View();
    }

Eso es lo que recomendaba un tutorial que seguí, pero no funciona, ¡también está poniendo? Length = 5 al final de la URL!

¡Gracias por adelantado!

editar: aquí está la ruta que estoy usando, es predeterminada

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

parece que alguien ha rechazado las dos sugerencias a continuación, ¡pero no ha publicado su solución!

Respuestas:


203

No parece que esté utilizando la sobrecarga correcta de ActionLink. Prueba esto:-

<%=Html.ActionLink("Modify Villa", "Modify", new {id = "1"})%>

Esto supone que su vista está en la carpeta / Vistas / Villa. Si no, sospecho que necesita: -

<%=Html.ActionLink("Modify Villa", "Modify", "Villa", new {id = "1"}, null)%>

4
Buena decisión: el problema fue que la primera sobrecarga de esa función tomó "HtmlAttributes" como cuarto parámetro. Entonces, agregar ", null" obligó al compilador a usar su objeto en línea como parámetros de ruta.
Timothy Khouri

26

En MVC 4 puede vincular de una vista a otro controlador pasando la Id o la clave principal a través de

@Html.ActionLink("Select", "Create", "StudentApplication", new { id=item.PersonId }, null) 

12

No pongas @ antes de la identificación

new { id = "1" }

¿El marco lo "traduce" en? Longitud cuando hay un desajuste en el parámetro / ruta


5

En MVC 5 es bastante similar

@Html.ActionLink("LinkText", "ActionName", new { id = "id" })

1

La ID también funcionará con el @signo al frente, pero tenemos que agregar un parámetro después de eso. es decirnull

parece:

@Html.ActionLink("Label Name", "Name_Of_Page_To_Redirect", "Controller", new {@id="Id_Value"}, null)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.