在ASP.NET Core
中,我需要从命名空间Microsoft.AspNetCore.Mvc.Razor.HelperResult
获取内容值,并在变量中赋值,但是将命名空间分配给该变量。
当我使用命名空间MVC
并将该内容分配给变量时,它在System.Web.WebPages.HelperResult
中正常工作。 (内容是一些html元素)。
请检查图片以查找问题。
我的代码:
答案 0 :(得分:0)
在.NET Core
HelperResult
返回IHtmlContent
而不是IHtmlString
。
对于IHtmlContent
,使用类似here提及的扩展名可能会很方便:
public static IHtmlContent GetList(this IHtmlHelper helper)
{
var listHtml = new HtmlContentBuilder();
listHtml.AppendHtml("<ol><li>");
listHtml.AppendHtml(helper.ActionLink("foo", "bar", "example"));
listHtml.AppendHtml("</li></ol>");
return listHtml;
}
答案 1 :(得分:0)
尝试一下(由于HelperResult
实现了IHtmlContent
接口):
public static string ToHtmlString(this IHtmlHelper source, IHtmlContent htmlContent)
{
var sb = new StringBuilder();
using (TextWriter tw = new StringWriter(sb))
{
var encoder = (HtmlEncoder)source.ViewContext.HttpContext.RequestServices.GetService(typeof(HtmlEncoder));
htmlContent.WriteTo(tw, encoder);
}
return sb.ToString();
}
,然后在Razor视图中调用此方法,如下所示:
@Html.ToHtmlString(helperResultObject)