把HTML放入Html.ActionLink()中,如何加上没有链接文本?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (383)

我有两个问题:

  1. 我想知道如何Html.ActionLink()在MVC视图中使用时不显示链接文本(实际上是这样Site.Master)。

没有一个重载的版本不允许链接文本,当我尝试传递一个空白的string时,编译器告诉我它需要一个非空字符串。

我怎样才能解决这个问题?

  1. 我需要把<span>标签放在锚标签,但它不工作Html.ActionLink();。我想看到下面的输出: Span text

如何将标签放在ASP.NET MVC的锚标签中?

提问于
用户回答回答于

还有一种做法是自定义HtmlHelper扩展。注:“ParameterDictionary”是我自己的类型。你可以替换RouteValueDictionary,但你必须以不同的方式构造它。

public static string ActionLinkSpan( this HtmlHelper helper, string linkText, string actionName, string controllerName, object htmlAttributes )
{
    TagBuilder spanBuilder = new TagBuilder( "span" );
    spanBuilder.InnerHtml = linkText;

    return BuildNestedAnchor( spanBuilder.ToString(), string.Format( "/{0}/{1}", controllerName, actionName ), htmlAttributes );
}

private static string BuildNestedAnchor( string innerHtml, string url, object htmlAttributes )
{
    TagBuilder anchorBuilder = new TagBuilder( "a" );
    anchorBuilder.Attributes.Add( "href", url );
    anchorBuilder.MergeAttributes( new ParameterDictionary( htmlAttributes ) );
    anchorBuilder.InnerHtml = innerHtml;

    return anchorBuilder.ToString();
}
用户回答回答于

你可以通过Url.Action呈现一个URL而不是使用Html.ActionLink

<a href="<%= Url.Action("Index", "Home") %>"><span>Text</span></a>
<a href="@Url.Action("Index", "Home")"><span>Text</span></a>

做一个空白的网址,你可以使用:

<a href="<%= Url.Action("Index", "Home") %>"></a>
<a href="@Url.Action("Index", "Home")"></a>

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动