使用Twitter Bootstrap在@ html.actionlink中显示html

我正在使用Twitter Bootstrap,并试图使我的链接ASP.Net MVC看起来不错。

但是,下面的链接中的<i class = …是html编码的,而不是作为html发送给浏览器:

@Html.ActionLink("<i class='icon-user icon-white'></i> Create New", "Create", "", New With {Key .class="btn btn-primary"} ) 

按钮如何显示

有什么办法保持<i class = …为html,以便button正确显示?

不要使用@Html.ActionLink() ,只需要自己写出<a>标签。 您可以使用@Url.Action()来获取HREF属性的操作的URL。

@Html助手很好,但他们并不总是提供你需要的灵活性。

我正在处理同样的问题,但想继续使用一个帮手,因为我正在制作一个Ajaxbutton。

我结束了这两个帮手的方法,每个帮手:

 public static MvcHtmlString IconActionLink(this AjaxHelper helper, string icon, string text, string actionName, string controllerName, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes) { var builder = new TagBuilder("i"); builder.MergeAttribute("class", icon); var link = helper.ActionLink("[replaceme] " + text, actionName, controllerName, routeValues, ajaxOptions, htmlAttributes).ToHtmlString(); return new MvcHtmlString(link.Replace("[replaceme]", builder.ToString())); } public static MvcHtmlString IconActionLink(this HtmlHelper helper, string icon, string text, string actionName, string controllerName, object routeValues, object htmlAttributes) { var builder = new TagBuilder("i"); builder.MergeAttribute("class", icon); var link = helper.ActionLink("[replaceme] " + text, actionName, controllerName, routeValues, htmlAttributes).ToHtmlString(); return new MvcHtmlString(link.Replace("[replaceme]", builder.ToString())); } 

只要将它们放在项目中的静态类中,编译后就可以看到它们(您可能需要在页面上添加使用语句)。

当使用助手时,可以对图标string使用“icon-plus”,甚至是“icon-plus icon-white”。

3步骤解决scheme:

1.创build这个HtmlExtensions类:

 using System.Web.Mvc; public static class HtmlExtensions { public static MvcHtmlString ActionButton(this HtmlHelper html, string linkText, string action, string controllerName, string iconClass) { //<a href="/@lLink.ControllerName/@lLink.ActionName" title="@lLink.LinkText"><i class="@lLink.IconClass"></i><span class="">@lLink.LinkText</span></a> var lURL = new UrlHelper(html.ViewContext.RequestContext); // build the <span class="">@lLink.LinkText</span> tag var lSpanBuilder = new TagBuilder("span"); lSpanBuilder.MergeAttribute("class", ""); lSpanBuilder.SetInnerText(linkText); string lSpanHtml = lSpanBuilder.ToString(TagRenderMode.Normal); // build the <i class="@lLink.IconClass"></i> tag var lIconBuilder = new TagBuilder("i"); lIconBuilder.MergeAttribute("class", iconClass); string lIconHtml = lIconBuilder.ToString(TagRenderMode.Normal); // build the <a href="@lLink.ControllerName/@lLink.ActionName" title="@lLink.LinkText">...</a> tag var lAnchorBuilder = new TagBuilder("a"); lAnchorBuilder.MergeAttribute("href", lURL.Action(action, controllerName)); lAnchorBuilder.InnerHtml = lIconHtml + lSpanHtml; // include the <i> and <span> tags inside string lAnchorHtml = lAnchorBuilder.ToString(TagRenderMode.Normal); return MvcHtmlString.Create(lAnchorHtml); } } 

2.在你的视图中添加这个

 @using Extensions 

3.当你需要的时候简单的打电话

 @: <li class="btn btn-mini btn-inverse"> @Html.ActionButton(lLink.LinkText, lLink.ActionName, lLink.ControllerName, lLink.IconClass)</li> 

使用TwitterBootstrapMVC 。

它适用于intellisense,允许stream利的语法,你可以用它写这样的东西:

 @(Html.Bootstrap().ActionLinkButton("Create New", "Create") .IconPrepend(Icons.user, true) .Style(ButtonStyle.Primary)) 

IconPrepend中的参数true为白色图标types。

此外,还有更多非常有用的帮手。


免责声明:我是TwitterBootstrapMVC的作者

使用Bootstrap 3这个库不是免费的。

 @Html.ActionLink(" New", "Create", "", new { @class="icon"} ) 

在CSS风格:

 .icon:before{ font-family: FontAwesome; content: "\f055"; } 
 <a href="@Url.Action("Index","Employee")" class="btn btn-primary">Index</a> 

@ Html.ActionLink(“Link Title”,“ActionName”,“ControllerName”,New with {.id = Model.id}, New With {.class = Html.Raw(“btn btn-primary btn-mini”)}

这个HTML.AcionLink重载允许你将属性添加到呈现的html中 – 记得在这个重载中为所需的parameter passingnull / nothing。

对于任何ASP.NET用户,这是如何工作对我来说:

 <%: Html.ActionLink("Cancel", "Index", "Catalog_Users", new { @class = "btn btn-primary" })%> 

显示的文本将是:取消。 ActionResult将是Index,Catalog_Users是控制器。

虽然这个问题很老,但我仍然提供了一个更简单的解决scheme。 起初,我觉得很难做到这一点,但这么简单。

 <a href="@Url.Action("ActionMethod", "Controller",)" class="btn btn-primary"><i class="fa fa-fw fa-bar-chart-o"></i> Chart</a> 

@ Url.Action()给予了与Html.ActionLink相同的权力。 看下面的图片(最上面的button就是你使用它的方式,而最下面的button是解决问题的方法。

在MVC Html.Action函数中使用html代码

我喜欢G Jeny Remirez的回答。 我只是想扩大一点。 使用四个argumnent actionlink来包含这个类是很重要的。 所以,如果你只是想redirect到相同的控制器,但不同的行动,它是:

 @Html.ActionLink("cancel", "Index", null, new { @class = "btn" }) 

或者如果你想用一些参数redirect到同一个控制器:

 @Html.ActionLink("Cancel", "Index", new { param1 = ViewBag.param1, input = "activity" }, new { @class = "btn" })