如何解决将 TagBuilder 核心方法从 ASP.NET MVC 5 迁移到 ASP.NET Core (.NET 5)
我有一个用 ASP.NET MVC 5 开发的 Web 应用程序,我必须将它迁移到 ASP.NET Core (.NET 5)。我有一些 HtmlHelper 的扩展方法来获取带有链接的字形图标:
public static MvcHtmlString GlyphiconActionLink(this HtmlHelper helper,string action,string controller,object parameters,string glyphiconTag,string title)
{
TagBuilder span = new TagBuilder("span");
span.MergeAttribute("class",$"glyphicon {glyphiconTag}");
span.MergeAttribute("title",title);
string url = UrlHelper.GenerateUrl(
null,action,controller,new RouteValueDictionary(parameters),helper.RouteCollection,helper.ViewContext.RequestContext,true);
TagBuilder link = new TagBuilder("a");
link.MergeAttribute("href",url);
link.InnerHtml = span.ToString(TagRenderMode.SelfClosing);
return MvcHtmlString.Create(link.ToString());
}
在 Razor 页面中我可以写这个
@Html.GlyphiconActionLink("Details","MyController",new { id = model.Id },"glyphicon-pencil","Show to details")
要获取此 HTML:
<a href="/mycontroller/details/1"><span class="glyphicon glyphicon-pencil" title="Details" /></a>
现在,在 .NET Core 中,这段代码不起作用,它有很多错误。
我所做的改变:
- 将值从
System.Web.Mvc.MvcHtmlString
返回到Microsoft.AspNetCore.Html.HtmlString
,返回return new HtmlString(link.ToString());
。 - 从
link.InnerHtml = span.ToString(TagRenderMode.SelfClosing)
到link.InnerHtml.Append(span.ToString(TagRenderMode.SelfClosing))
。
我遇到的错误是:
-
UrlHelper.GenerateUrl
:“GenerateUrl”由于其保护级别而无法访问。 -
helper.RouteCollection
:“HtmlHelper”不包含“RouteCollection”的定义。 -
helper.ViewContext.RequestContext
:“ViewContext”不包含“RequestContext”的定义。 -
span.ToString(TagRenderMode.SelfClosing)
:方法“ToString”没有重载需要 1 个参数。
您知道如何迁移吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。