【问题标题】:Is it possible to use an ActionLink containing an element?是否可以使用包含元素的 ActionLink?
【发布时间】:2011-12-20 21:53:54
【问题描述】:

正如问题所说,是否可以使用包含元素的 ActionLink,如果没有,实现它的最佳方法是什么?

例如,假设我有一个 Span 元素,我希望整个东西成为一个超链接......以下工作:

<a href="/Site/Page/@Model.ID?Type=test">
                <span class="box5">Click anywhere in this box</span> </a>

想象一下 span/css 类 box5 会变得这么大...原本是一个 DIV,但是,我发现它没有遵循标准,这似乎可以遵循。

这渲染和工作正常,但是,无论如何可以使用 ActionLink 代替吗?我试图猜测语法,例如(从表单复制):

@using (Html.Actionlink){<span class="box5">Click anywhere in this box</span>}

还有很多其他组合都没有运气。

现在,我的手动 HTML 解决方法工作正常,我很乐意放弃它,但是,是否可以使用 MVC ActionLink,如果可以,我应该担心/会有什么好处吗?

【问题讨论】:

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


    【解决方案1】:

    Html.ActionLink 只是 Extension MethodHtmlHelper 对象的一个​​普通的旧 Extension Method

    您也可以创建自己的custom extension methods for HtmlHelper,它们的操作非常简单,可以为您节省大量时间。

    【讨论】:

      【解决方案2】:

      您不能在 actionlink 中指定 html 标记,但我可以建议您两种解决方案: 1 用你的函数扩展actionlink。因此,您还可以实现生成带有其他 htmal 标记的 href 的 actionlink(在您的情况下为 img 或 span)

      2 在 href 中使用 url.content。这就像您的实际解决方法,但更好,因为您使用在 global.asax 中定义的规则而不是使用“魔术字符串”

      【讨论】:

        【解决方案3】:

        有一个技巧可以用来解决这个限制

        @Html.Raw(
             Html
                .ActionLink("-replace-me-", .....)
                .ToString()
                .Replace(
                      "-replace-me-", 
                      @"<span class=""box5"">Click anywhere in this box</span>"))
        

        它并不优雅,但它可以完成工作

        【讨论】:

        • 使用 Michael Stum 的建议,但是把这个 hack 放在你的口袋里,在使用 Ajax.ActionLink 时它会派上用场
        • +1 当然 - 我不想在得到答案后编辑/改写问题,但是,我决定我希望这些是 Ajax 链接,而且看起来这个解决方案有效(整个上午都被卡住了)...所以,+1/回答迈克尔,但也给你 +1。
        • 我不确定我是否做错了,但是,它只是呈现为文本......我猜剃刀正在幕后做它的事情。将所有内容都包含在 @Html.Raw() 中似乎可以解决问题……起初这看起来很混乱,但是,太棒了!
        【解决方案4】:

        只需改用@Url.Action

        <a href="@Url.Action("Page","Site", new { id = Model.Id, @Type = "test" })">
         <span class="box5">Click anywhere in this box</span> </a>
        

        【讨论】:

          【解决方案5】:

          只要写&lt;span&gt; &lt;/span&gt; 在跨度之间使用@html>ActionLink 方法它会起作用

          【讨论】:

          • 我认为最初的发布者想要一种在跨度内仅包含部分链接文本的方法——换句话说, 嵌套在 中,反之亦然。
          猜你喜欢
          • 1970-01-01
          • 2013-11-16
          • 1970-01-01
          • 2013-02-05
          • 1970-01-01
          • 2013-05-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-07
          相关资源
          最近更新 更多