【问题标题】:After clicking on an actionlink, how do I reference back to its linkText?单击操作链接后,如何引用其链接文本?
【发布时间】:2016-03-29 14:44:35
【问题描述】:

假设我有一张这样开头的表格:

@foreach (var item in Model)
{
    <tr>
        <td>
            @Html.ActionLink(item.Name, "Things", new { someId = item.Id})
        </td>

它会将我带到该特定项目的视图。一旦我在那个单独的 .cshtml 文件中,我如何才能引用回出现在此 ActionLink 中的原始“item.Name”字符串?

* 解决方案编辑 *

解决方案最终看起来像这样。

动作链接:

@Html.ActionLink(item.Name, "Things", new { someId = item.Id, someName = item.Name})

行动:

public ActionResult Things(Guid? someId, string someName)
...
ViewBag.currentName = someName;

另一种观点:

<h2>@ViewBag.currentName</h2>

【问题讨论】:

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


    【解决方案1】:

    您可以添加一个带有项目名称的额外参数

    @Html.ActionLink(item.Name, "Things", new { someId = item.Id, name = item.Name})
    

    对于这种方法,您还需要修改控制器和模型。

    【讨论】:

    • 我猜,不是你的模型,而是只有控制器才能接收新参数。一旦你有了,你可以通过 ViewData 将它传递给下一个 View
    • 那是个人的 :-),如果可以添加的话,我喜欢在我的 ViewModel 中添加东西
    • 谢谢。我希望我可以将两个答案都标记为正确,因为我最终这样做了,但另一个答案有助于解决其他问题。
    【解决方案2】:

    我认为您不必引用第一个 ActionLink 参数。您可能感兴趣的是一个对象,它是该视图的 Model。当您单击该链接时,您将导航到传递当前模型对象的someId - id 的操作。那么可能你应该在你的存储中通过它的id 找到一个对象。它将具有用作 ActionLink 参数的 .Name 属性。

    但是,如果您只需要与 ActionLink 中的第一个参数完全相同的字符串,它可以是任何字符串,您应该在路由值中复制它。您的 Things 操作不仅应接受 someId 参数,还应接受此字符串。在你应该通过ModelViewBag/ViewDictionary 将这个字符串传递给你的视图之后。

    【讨论】:

    • 谢谢。我最终选择了 ViewBag 方法。之前让我感兴趣的部分是没有将它包含在 Things 操作中。
    猜你喜欢
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多