将Html代码放在html helper生成的标记中

时间:2015-04-16 13:22:33

标签: html asp.net .net asp.net-mvc razor

我有这个Html代码:

 <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Espace propriétaire du terrain <span class="caret"></span></a>

我想使用html帮助程序而不是使用a标记

  @Html.ActionLink("Espace propriétaire du terrain ", "About", "Home", null, new { @class = "dropdown", data_toggle = "dropdown", role = "button", aria_expanded = "false" })<span class="caret"></span>

问题是span标记在a标记之外,即在第一个代码中,我将两个标记内联,但在第二个代码中,它是垂直放置的。

那么,如何更改我的代码以使用Html.ActionLink替换另一个html代码?

3 个答案:

答案 0 :(得分:2)

您可以通过锚点标记的Html.ActionLink属性中的Url.Action呈现网址,而不是使用href,因为您无法在ActionLink内嵌入任何HTML。

<a href="@Url.Action("About", "Home")" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Espace propriétaire du terrain <span class="caret"></span></a>

答案 1 :(得分:1)

创建自定义扩展方法,使其按照您希望的方式运行。

参考:http://blog.syntaxc4.net/post/2010/10/09/How-To-Create-Custom-MVC-Extension-Methods.aspx

示例:

  public static MvcHtmlString CustomActionLink(this HtmlHelper htmlHelper, string linkText, string area, string controller, string tabMenu, string action, RouteValueDictionary routeValues, IDictionary<string, object> htmlAttributes)
    {
        routeValues.Add("area", area);
        routeValues.Add("tabMenu", tabMenu);
        return htmlHelper.ActionLink(linkText, actionName, controllerName, routeValues, htmlAttributes);
    }

Code Src:Create a custom ActionLink

答案 2 :(得分:0)

本身不可能。 ActionLink将始终对给定文本进行编码,因此您无法在链接描述中添加范围。把它放在后面是不一样的。

您可以使用CSS规则使标记在这种情况下的行为类似于span标记。