C# 如何从asp.net mvc 2项目中的非控制器静态类生成url?

C# 如何从asp.net mvc 2项目中的非控制器静态类生成url?,c#,asp.net-mvc-2,html-helper,routevalues,url-action,C#,Asp.net Mvc 2,Html Helper,Routevalues,Url Action,我在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

我在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();
    }
}
公共静态类CaptionExtensions
{
公共静态字符串标题(此HtmlHelper帮助程序,标题标题)
{
var sb=新的StringBuilder();
sb.附录(“
    ”); foreach(标题中的变量标题) { //var url=url.Action(“CaptionCategory”,新的{id=caption.Code}) 某人加上一行(
  • ); 某人加上一行(“”); 某人加上一行(“
  • ”); } sb.附录(“
”); 使某人返回字符串(); } }

我需要生成类似的方式在评论行url。注释代码是我在控制器类中执行此操作的方式,但这是helper类(静态上下文)。任何帮助???

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

var urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
var url = urlHelper.Action("CaptionCategory", new { id = caption.Code });
或者在您的特定情况下,使用html帮助程序生成锚定,而不是像您那样对其进行硬编码:

sb.AppendLine("<li>");
sb.AppendLine(
    helper.ActionLink(
        caption, 
        "CaptionCategory", 
        new { id = caption.Code }
    ).ToHtmlString()
);
sb.AppendLine("</li>");
sb.AppendLine(
  • ); 附加物( helper.ActionLink( 说明文字 “标题类别”, 新建{id=caption.Code} ).ToHtmlString() ); 某人加上一行(“
  • ”);

    为了实现这一点,您显然应该使用System.Web.Mvc.Html添加
    到文件顶部,以便将
    ActionLink
    扩展方法引入范围。

    非常感谢,这就是我需要的。