@ Html.ActionLink和@ Html.DisplayFor在同一时间(不对,但它描述了我想做的事)

时间:2012-03-06 13:32:00

标签: asp.net-mvc-3 razor actionlink

我将以下表放在名为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 个答案:

答案 0 :(得分:35)

如果我理解你的问题,你需要一个与课程文本的链接。

这应该有效:

  @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>

答案 1 :(得分:3)

您在)后忘了Html.DisplayFor(modelItem => item.Course.Title

也许尝试添加.ToString()可能有帮助。

答案 2 :(得分: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 })