gpt4 book ai didi

c# - 如何从 asp.net mvc 2 项目中的非 Controller 静态类生成 url?

转载 作者:行者123 更新时间:2023-11-30 21:12:43 25 4
gpt4 key购买 nike

我在 asp.net mvc2 项目中创建了 Html 帮助程序类:

public static class CaptionExtensions
{
public static string Captions(this HtmlHelper helper, Captions captions)
{
var sb = new StringBuilder();
sb.AppendLine("<ul>");

foreach (var caption in captions)
{
// var url = Url.Action("CaptionCategory", new {id = caption.Code} )

sb.AppendLine("<li>");
sb.AppendLine( "<a href="+ url + ">");
sb.AppendLine( caption);
sb.AppendLine( "</a>");
sb.AppendLine("</li>");
}

sb.AppendLine("</ul>");


return sb.ToString();
}
}

我需要生成与注释行中的方式类似的 url。注释代码是我在 Controller 类中的做法,但这是帮助程序类(静态上下文)。有帮助吗???

最佳答案

只需从 HtmlHelper 的 RequestContext 属性中创建一个 UrlHelper 并使用它来生成 url:

var urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
var url = urlHelper.Action("CaptionCategory", new { id = caption.Code });

或者在您的特定情况下,使用 html 帮助程序生成 anchor ,而不是像您那样对其进行硬编码:

sb.AppendLine("<li>");
sb.AppendLine(
helper.ActionLink(
caption,
"CaptionCategory",
new { id = caption.Code }
).ToHtmlString()
);
sb.AppendLine("</li>");

为此,您显然应该将 using System.Web.Mvc.Html; 添加到文件顶部,以便将 ActionLink 扩展方法纳入范围.

关于c# - 如何从 asp.net mvc 2 项目中的非 Controller 静态类生成 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7299817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com