HtmlHelper 中的 RouteLink?

发布于 2024-09-06 18:00:10 字数 166 浏览 6 评论 0原文

如何在自定义 HtmlHelper 中组成 RouteLink?我知道如何在部分视图中制作它,但我想使用 RouteLink 在自定义 htmlhelper 扩展方法中构建新链接。如何做到这一点?

更新:我注意到 HtmlHelper.GenerateRouteLink。但是我需要输入什么作为参数呢?

How can I make up a RouteLink in a custom HtmlHelper? I know how to make it in a partial view but I want to build up a new link in a custom htmlhelper extension method with the use of a RouteLink. How to accomplish this?

Update: I noticed HtmlHelper.GenerateRouteLink. But what do I need to put in as parameters?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

流星番茄 2024-09-13 18:00:10

这是一个例子。假设您想要将链接包装到具有某个给定类的 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" }) %>

以及将产生所需的标记。任何其他 RouteLink 的重载如果需要的话可以使用

Here's an example. Let's suppose that you want to wrap the links into a div tag with some given class so that your resulting html looks like this:

<div class="foo"><a href="/home/index">Some text</a></div>

You could write the following extension method:

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

which could be used like this:

<%= Html.CustomRouteLink("foo", "Some text", 
    new { action = "index", controller = "home" }) %>

and this will produce the desired markup. Any other overloads of RouteLink could be used if necessary.

守不住的情 2024-09-13 18:00:10

一旦获得 UrlHelper 的实例,您应该能够在 HtmlHelper 方法中执行您想做的任何操作

UrlHelper url = new UrlHelper(helper.ViewContext.RequestContext);

Once you get an instance of the UrlHelper you should be able to do whatever you want to do in your HtmlHelper method

UrlHelper url = new UrlHelper(helper.ViewContext.RequestContext);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文