在Html.ActionLink()中放置HTML,以及无链接文本?

10 浏览
0 Comments

在Html.ActionLink()中放置HTML,以及无链接文本?

我有两个问题:\n

    \n

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

\n没有一个不允许链接文本的重载版本,当我尝试传入一个空的string时,编译器告诉我它需要一个非空字符串。我该如何解决这个问题?\n

    \n

  1. 我需要在锚点标签内放置标签,但是使用Html.ActionLink()无法实现。我希望看到以下输出:\nSpan text
  2. \n

\n在ASP.NET MVC中如何在锚点标签内放置标签?

0
0 Comments

在使用Html.ActionLink()方法时,有时候需要在链接文本中嵌入HTML代码,或者没有链接文本。下面是一个解决这个问题的方法:

<%= Html.ActionLink("LinkTextToken", "ActionName", "ControllerName").ToHtmlString().Replace("LinkTextToken", "Refresh ")%>

这段代码中,我们首先使用Html.ActionLink()方法创建一个链接,并将其转换为HTML字符串。然后,我们使用Replace()方法将链接文本"LinkTextToken"替换为带有HTML代码的文本"Refresh "。

在Razor中,我们需要使用Html.Raw()方法来包裹整个代码块,以保留HTML代码的原样输出。

这个方法的好处是可以在使用ajax或其他无法手动创建链接时使用,同时保留链接的布局和样式。

需要注意的是,这种方法在.NET Core中不起作用,因为在.NET Core的v2版本中,ToHtmlString()方法已被移除。

0
0 Comments

问题:如何在Html.ActionLink()中嵌入HTML代码,并且不添加链接文本?

原因:Html.ActionLink()方法默认只能生成带有文本的链接,无法直接嵌入HTML代码。但有时我们需要在链接中添加一些特殊的HTML元素或样式。

解决方法:可以通过自定义HtmlHelper扩展方法来实现这个功能。下面是一个示例代码:

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();
}

使用这个扩展方法,可以在Html.ActionLink()中嵌入任意的HTML代码。例如,可以通过调用`Html.ActionLinkSpan("", "Action", "Controller", null)`来生成一个带有图标的链接。

注意:在使用自定义的HtmlHelper扩展方法时,需要将自定义方法所在的命名空间添加到视图文件的引用中,例如`@using YourNamespace`。

通过上述方法,可以方便地在Html.ActionLink()中嵌入HTML代码,并且不添加链接文本。这样可以满足一些特殊的需求,例如添加图标、样式或其他自定义元素。

0
0 Comments

问题的原因是在使用Html.ActionLink()方法时,无法将HTML代码直接嵌入到链接文本中。解决方法是使用Url.Action()方法来生成URL,并将HTML代码直接嵌入到标签中。

下面是解决方法的具体代码示例:

">Text
Text

如果要创建一个没有链接文本的链接,可以将标签的内容留空:

">

如果在使用上述解决方法时遇到问题,可以尝试使用.Action()方法,这是在使用Razor模板时的一种替代方案。下面是使用.Action()方法的示例:

Create

需要注意的是,这种方法中不需要使用引号。

如果是用于静态内容,为什么不直接输入HTML代码呢?这样似乎更简洁明了。然而,在Asp.Net Core 2中,如果要使用Ajax,这不再是一个可行的选择。

以上就是解决问题的原因和方法,希望对正在尝试使用Html.ActionLink()方法的开发者有所帮助。

0