【问题标题】:Razor @Html.ActionLink adds current id to path - why?Razor @Html.ActionLink 将当前 ID 添加到路径 - 为什么?
【发布时间】:2021-01-07 12:02:01
【问题描述】:

我正在处理相同的代码 https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/read-related-data?view=aspnetcore-5.0#create-an-instructors-page

我很困惑为什么会出现以下情况(在来自 Instructors 控制器的视图中) @Html.ActionLink("Select", "Index", new { courseID = item.CourseID })

产生链接: https/localhost:44325/Instructors/Index/4?courseID=1050

为什么它给出数字 4? 它是正确的。我选择了 4 号导师。 我知道 Instructors 是控制器,但它怎么知道包含 4(这是路由中的 id)

【问题讨论】:

  • 你能显示为从@model开始的整个视图
  • model ContosoUniversity.Models.SchoolViewModels.InstructorIndexData if (Model.Courses != null) {

    选定讲师讲授的课程

    @foreach(Model.Courses 中的变量项){ string selectedRow = "" ; if (item.CourseID == (int?)ViewData["CourseEId"]) selectedRow = "bg-success";
    Number Title Department
    @Html.ActionLink("Select", "Index", new { courseID = item.CourseID });
  • 抱歉这么大的评论 - 我不知道如何添加附件 - 你可以转到原始问题中的链接,它会以更好的格式显示代码

标签: c# razor asp.net-core-mvc


【解决方案1】:

这是因为你先点击<a asp-action="Index" asp-route-id="xxx">Select</a>。它会改变第二个'Select'的url链接。 这是一个演示:

索引:

<a asp-action="Index" asp-route-id="1">Select</a>
@Html.ActionLink("Select", "Index", new { courseID = 1 })

结果:

【讨论】:

  • 感谢您的回答,但它在点击之间往返。我想在文档中看到一些说明这种行为的东西。我原以为 actionLink 会构建 href,但它似乎对 href 进行了替换,并且路由 id 来了。
  • 你用什么工具来写这么酷的帖子? (以及你是如何在 stackoverflow 上发布的——我只知道如何发布文本)
  • 你可以在stackoverflow上发布gif。这是一个gif,就像添加图像一样添加它。
【解决方案2】:

模型绑定会查看动作方法中的每个参数,并在可能的情况下进行设置。在这种情况下,id 是路由的一部分,这就是它被绑定的原因。

感谢那些留下答案的人 - 我感谢支持

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    • 2011-09-18
    • 2014-04-30
    • 2023-02-16
    • 2017-05-06
    • 2018-04-14
    相关资源
    最近更新 更多