Tengo la siguiente tabla se encuentra en una vista dentro de un controlador con nombre de Estudiante (/Estudiante/Detalles/1):

    @foreach (var item in Model.Enrollments)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Course.Title)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Grade)
            </td>
        </tr>
    }

Me gustaría hacer cada definición de tabla en un enlace que me lleva a una vista dentro de un controlador con nombre Supuesto (/Curso/Detalles/1).

He intentado cosas a lo largo de las líneas de:

@Html.ActionLink(Html.DisplayFor(modelItem => item.Course.Title, "Details", "Course"))

en lugar de

@Html.DisplayFor(modelItem => item.Course.Title)

Que no compila. ¿Cómo puedo visualizar de manera correcta mi modelo del título, junto con un enlace a los detalles de los que se hace referencia el título?

InformationsquelleAutor Ecnalyr | 2012-03-06

3 Comentarios

  1. 35

    Si entiendo derecho a tu pregunta, quieres un enlace con el texto del curso.

    Esto debería funcionar:

      @Html.ActionLink(item.Course.Title, "Details", "Course")

    Si quieres pasar el ID del curso para el controlador (asumiendo que sus reglas de enrutamiento están configurados correctamente y el Id es algo así como: elemento.Curso.Id)

      @Html.ActionLink(item.Course.Title, "Details", "Course", new { Id = item.Course.Id }, null /* html attributes */)

    Si necesita utilizar el UIHint atributo de la propiedad, para añadir formato, puede utilizar este

      <a href="@Url.Action("Details", "Course", new { Id=item.Course.Id})">@Html.DisplayFor(modelItem => item.Course.Title)</a>
    • Creo que el segundo bit de código es exactamente lo que yo necesitaba. Gracias.
    • En realidad, estoy teniendo un poco de problemas. He utilizado este código: @Html.ActionLink(elemento.Curso.El título, «Detalles», «Curso», new { id= item.Curso.CourseID }), pero todos los enlaces de enlaces generados específicamente para esto: /Estudiante/Detalles/2?Longitud=6 ¿por Qué sucede esto? No sé donde «?Longitud=6» viene, ni por qué se sigue pasando por mi /Estudiante controlador en lugar de mi /Curso de controlador.
    • Espera, creo que puedo ver mi error. Responderemos a la brevedad.
    • Escribí el código «sobre la marcha». Me perdí el nulo para el HtmlAttributes. Editado la respuesta.
    • Me fijo mediante: @Html.ActionLink(elemento.Curso.El título, «Detalles», «Curso», new { id= item.Curso.CourseID }, «a») había añadido la «a» al final, y se obligó a utilizar el controlador adecuado nombre de «Curso», sin la «a» fue utilizando una sobrecarga que no permiten que el curso sea asignado. Yo no podía llegar a enlazar correctamente sin la «a». Consejos sobre la solución de ese poco de extrañeza? (no aparece nada funcionalmente mal, sólo un poco extraño – no tengo idea de lo de la «a» que en realidad está haciendo»)
    • Como dije en mi comentario anterior llok en la corregidos línea de código. Que debe hacerlo. @Html.ActionLink(elemento.Curso.El título, «Detalles», «Curso», new { Id = item.Curso.Id }, null /* atributos html */)
    • Ah, gracias *facepalm
    • En realidad, DisplayFor puede devolver el texto que se muy diferentes de sólo el valor de la propiedad. Sería mejor utilizar DisplayTextFor o ValueFor para obtener el texto para el enlace.

  2. 3

    Se le olvidó un ) después de Html.DisplayFor(modelItem => item.Course.Title.

    Tal vez trate de añadir un .ToString() que podría ayudar.

    • Sí, ciertamente, tuvo un percance con el paréntesis, gracias.
  3. 0
    //you want to use link with the displaying a course. you can use.
    
    <a href = "@url.action("Details","course",new {Id = item.Course.Id}
    @html.displayfor(m => m.Course.Title)</a>
    
    //second approach
    
     @Html.ActionLink(item.Course.Title, "Details", "Course", new { Id = item.Course.Id })
    • Por favor, incluya la explicación del código.
    • Si quieres pasar el ID del curso para el controlador (asumiendo que sus reglas de enrutamiento están configurados correctamente y el Id es algo así como: elemento.Curso.Id)

Dejar respuesta

Please enter your comment!
Please enter your name here