我在asp.net mvc2项目中创建了Html helper类:
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。注释代码是我在控制器类中的方式,但这是辅助类(静态上下文)。任何帮助???
答案 0 :(得分:4)
只需从HtmlHelper的RequestContext属性中创建一个UrlHelper并使用它来生成网址:
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>");
要实现此目的,您显然应将using System.Web.Mvc.Html;
添加到文件顶部,以便将ActionLink
扩展方法纳入范围。