我如何从非控制器静态类在asp.net mvc 2项目生成url
本文关键字:mvc net 项目 url asp 静态类 控制器 | 更新日期: 2023-09-27 18:07:48
我在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类似的方式在注释行。注释代码是我如何在控制器类中做到这一点,但这是助手类(静态上下文)。任何帮助吗?
只需从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>");
要做到这一点,您显然应该将using System.Web.Mvc.Html;
添加到文件的顶部,以便将ActionLink
扩展方法纳入范围。