在 MVC Razor 中包含跨度 ASP.net 呈现链接

本文关键字:net 链接 ASP MVC Razor 包含跨 | 更新日期: 2024-10-29 15:33:33

渲染一个简单的链接很容易:

@Html.ActionLink("About this Website", "About")

但是您将如何用剃刀语法编写以下内容:

<a>
    <span>Hello, I'm inconvenient!</span>
</a>

欣赏正确方向的任何一点:)

在 MVC Razor 中包含跨度 ASP.net 呈现链接

我不确定我是否正确遵循您的示例,因为它不包含链接,并且链接的文本与跨度的文本不同,但这样的东西应该给你一个大致的想法:

<a href='@Url.Action("About")'>
    <span>Hello, I'm inconvenient!</span>
</a>

使用 Url.Action() 将返回实际的超链接而不是元素。

您可以创建自定义 Html 帮助程序,并且可以在应用程序中的任何视图中重用它:

namespace MyApplication.Helpers
{
  public static class CustomHtmlHelepers
  {
    public static IHtmlString ActionLinkWithSpan(this HtmlHelper htmlHelper, string linkText, string action, string controller, object routeValues, object htmlAttributes)
    {
       var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext);
       var span = new TagBuilder("span") { InnerHtml = linkText };
       var anchor = new TagBuilder("a") { InnerHtml = span.ToString() };
       anchor.Attributes["href"] = urlHelper.Action(action, controller, routeValues);
       anchor.MergeAttributes(new RouteValueDictionary(htmlAttributes));
       return MvcHtmlString.Create(anchor.ToString());
    }
  }
}

并在视图中使用它:

@using MyApplication.Helpers;
@Html.ActionLinkWithSpan("LinkText","ActionName","ControllerName",null,null)

输出网页:

<a href="/ControllerName/ActionName">
<span>LinkText</span>
</a>