@ Html.ActionLink и @ Html.DisplayFor одновременно (не правильно, но описывает, что я хочу сделать) - PullRequest
20 голосов
/ 06 марта 2012

У меня есть следующая таблица в контроллере с именем Student (/ Student / Details / 1):

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

Я бы хотел превратить каждое определение таблицы в ссылку, которая приведет меня к представлению в контроллере с именем Course (/Course/Details/1).

Я пробовал что-то вроде:

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

вместо

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

Который не компилируется. Как бы я соответствующим образом отобразил название моей модели вместе со ссылкой на детали упомянутого заголовка?

Ответы [ 3 ]

35 голосов
/ 06 марта 2012

Если я правильно понимаю ваш вопрос, вам нужна ссылка с текстом курса.

Это должно сработать:

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

Если вы хотите передать ID курса контроллеру (при условии, что ваши правила маршрутизации установлены правильно, а Id что-то вроде: item.Course.Id)

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

Если вам нужно использовать атрибут UIHint для свойства, чтобы добавить дополнительное форматирование, вы можете использовать это

  <a href="@Url.Action("Details", "Course", new { Id=item.Course.Id})">@Html.DisplayFor(modelItem => item.Course.Title)</a>
3 голосов
/ 06 марта 2012

Вы забыли ) после Html.DisplayFor(modelItem => item.Course.Title.

Возможно, попытка добавить .ToString() может помочь.

0 голосов
/ 20 июля 2017
// 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 })
...