问题描述
我有一个用 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 (将#修改为@)