如何从命名空间中获取内容" Microsoft.AspNetCore.Mvc.Razor.HelperResult"

时间:2017-06-13 13:11:29

标签: razor asp.net-core

ASP.NET Core中,我需要从命名空间Microsoft.AspNetCore.Mvc.Razor.HelperResult获取内容值,并在变量中赋值,但是将命名空间分配给该变量。

当我使用命名空间MVC并将该内容分配给变量时,它在System.Web.WebPages.HelperResult中正常工作。 (内容是一些html元素)。

请检查图片以查找问题。

我的代码:

Variable with namespace name as value

2 个答案:

答案 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)