【问题标题】:@Html.ActionLink and @Html.DisplayFor at the same time (not right, but it describes what I want to do)@Html.ActionLink 和 @Html.DisplayFor 同时(不对,但它描述了我想要做什么)
【发布时间】:2012-03-06 13:31:59
【问题描述】:

我在名为 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)

不编译。如何正确显示我的模型标题以及引用标题详细信息的链接?

【问题讨论】:

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


    【解决方案1】:

    如果我对您的问题的理解正确,您需要一个包含课程文本的链接。

    这应该可行:

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

    【讨论】:

    • 我相信第二段代码正是我所需要的。谢谢。
    • 其实我有点麻烦。我使用了这段代码:@Html.ActionLink(item.Course.Title, "Details", "Course", new { id= item.Course.CourseID }) 但每个链接都生成了专门指向此的链接:/Student/Details/2 ?Length=6 为什么会这样?我不知道 "?Length=6" 来自哪里,也不知道为什么它仍然通过我的 /Student 控制器而不是我的 /Course 控制器。
    • 等等,我想我明白我的错误了。很快就会回复。
    • 我“即时”编写了代码。我错过了 HtmlAttributes 的空值。编辑了答案。
    • 我通过使用修复它:@Html.ActionLink(item.Course.Title, "Details", "Course", new { id= item.Course.CourseID }, "a") 我有在末尾添加了“a”,它强制它使用“Course”的正确控制器名称 - 没有“a”,它使用了不同的重载,不允许分配课程。没有“a”,我无法正确链接。有什么技巧可以解决这个奇怪的问题吗? (功能上没有任何问题,只是有点奇怪——我不知道“a”实际上在做什么”)
    【解决方案2】:

    您在Html.DisplayFor(modelItem =&gt; item.Course.Title 之后忘记了)

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

    【讨论】:

      【解决方案3】:
      // 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 })
      

      【讨论】:

      • 如果您想将课程的 ID 传递给控制器​​(假设您的路由规则设置正确并且 Id 类似于:item.Course.Id)
      猜你喜欢
      • 2019-07-08
      • 2020-09-18
      • 2021-12-10
      • 1970-01-01
      • 2010-11-22
      • 1970-01-01
      • 2016-08-10
      • 2011-03-15
      • 1970-01-01
      相关资源
      最近更新 更多