【问题标题】:Using @Html.ActionLink in a replace function in Razor View在 Razor 视图的替换函数中使用 @Html.ActionLink
【发布时间】:2019-01-25 13:25:03
【问题描述】:

我正在从我的数据库中返回包含多个短语的数据。其中之一是以下文本:Submitted an Idea

我想让所有文本中的“想法”成为超链接,所以我想在我的 razor 视图中使用替换功能用我的 Html 助手替换单词“想法”:

@item.RewardType.Replace("Idea", @Html.ActionLink("Idea", "ChallengeIdea", "Ideas", new { id = item.fkiIdeaId }, null))

我环顾四周,但真的找不到任何东西。有人建议使用@Url.Action - 但问题仍然存在。

我该怎么做?还是使用 Html 助手是错误的做法?

感谢您的帮助。

【问题讨论】:

    标签: asp.net-mvc razor model-view-controller


    【解决方案1】:

    你可以试试这个:

    @Html.Raw(item.RewardType.Replace("Idea", $"<a href='/ideas/challengeidea/{item.fkiIdeaId}'>Idea</a>"))
    

    或者

    @Html.Raw(item.RewardType.Replace("Idea", "<a href=/ideas/challengeidea/" + item.fkiIdeaId+">Idea</a>"))
    

    【讨论】:

    • 感谢您的建议,但我收到以下错误:Feature 'interpolated strings' is not available in C# 5. Please use language version 6 or greater.
    • 啊,我明白了!你带领我朝着正确的方向前进。我做了以下事情:@Html.Raw(@item.RewardType.Replace("Idea", "&lt;a href=/ideas/challengeidea/" + item.fkiIdeaId + "&gt; Idea &lt;/a&gt;"))谢谢伙计!
    • 是的,你也可以用“+item.fkiIdeaId”代替$。我会将它添加到第二个选择的答案中。不客气!)
    【解决方案2】:

    HTML 助手可以在一般情况下帮助您。当它们产生的复杂性大于价值时,它们就没有用了

    <span>Submitted an <a href="@Url.Action("ChallengeIdea", "Ideas", new { id = item.fkiIdeaId })">Idea</a></span>
    

    如果资源中有 RewardType 并且不能使用纯 html,则可以将 RewardType 设置为 "Submitted an &lt;a href=\"{0}\"&gt;Idea&lt;/a&gt;" 并使用 string.format

    【讨论】:

    • 谢谢,但我需要使用替换。我提供的文本是一个示例,我从数据库返回了不同的短语,其中包含“Idea”一词,所以想用“Idea”这个词上的超链接替换“Idea”这个词 - 这可能吗?跨度>
    • @AxleWack 您可能想要遍历您的数据库结果,并对任何提及“想法”的内容进行 if 语句。当 if 语句返回 true 时,使用 HTML Helper actionlink 将结果值(即“idea”)放入其中。
    • 如果我正确理解了您的建议,那么我会将输入短语设为超链接吗?我特别希望“想法”这个词是一个超链接。仅使用替换会更简单吗?或者这不是我想的那么简单吗?
    猜你喜欢
    • 2021-08-19
    • 2011-05-12
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多