如何在自定义HtmlHelper中组成RouteLink?我知道如何在局部视图中创建它,但我想使用RouteLink在自定义的htmlhelper扩展方法中建立一个新的链接。如何做到这一点?HtmlHelper中的RouteLink?
更新:我注意到HtmlHelper.GenerateRouteLink。但是我需要作为参数放入什么?
如何在自定义HtmlHelper中组成RouteLink?我知道如何在局部视图中创建它,但我想使用RouteLink在自定义的htmlhelper扩展方法中建立一个新的链接。如何做到这一点?HtmlHelper中的RouteLink?
更新:我注意到HtmlHelper.GenerateRouteLink。但是我需要作为参数放入什么?
做下面是一个例子。让我们假设你要链接包装成一个div
标签与某个给定的类,以便您生成的HTML看起来像这样:
<div class="foo"><a href="/home/index">Some text</a></div>
你可以写下面的扩展方法:
public static class HtmlExtensions
{
public static MvcHtmlString CustomRouteLink(
this HtmlHelper htmlHelper,
string className,
string linkText,
object routeValues
)
{
var div = new TagBuilder("div");
div.MergeAttribute("class", className);
div.InnerHtml = htmlHelper.RouteLink(linkText, routeValues).ToHtmlString();
return MvcHtmlString.Create(div.ToString());
}
}
可能使用像这样:
<%= Html.CustomRouteLink("foo", "Some text",
new { action = "index", controller = "home" }) %>
这将产生所需的标记。如有必要,可以使用其他overloads of RouteLink
。
一旦你获得了UrlHelper的实例,你应该能够做任何你想要在你的HtmlHelper方法
UrlHelper url = new UrlHelper(helper.ViewContext.RequestContext);
我会试试看。 – 2010-06-22 14:14:33
它应该是新的UrlHelper(helper.ViewContext.RequestContext); – 2010-06-22 14:25:31
这似乎并没有朝着正确的方向发展。任何其他建议? – 2010-06-22 14:30:26
谢谢。起初由于缺少使用语句,我确实遇到了一些问题,所以RouteLink并不知道,甚至Resharper也没有找到它。我现在使用了LinkExtensions RouteLink方法。 – 2010-06-23 11:44:02