Asp.net core HtmlHelper在MVC 6 vNext中呈现嵌套标记帮助程序

Asp.net core HtmlHelper在MVC 6 vNext中呈现嵌套标记帮助程序,asp.net-core,asp.net-core-mvc,Asp.net Core,Asp.net Core Mvc,Q:是否有方法使用IHtmlHelper扩展呈现标记帮助程序的输出 信息:我正在使用ASP.NET 5/MVC 6(vNext)在视图中渲染以下内容: <cache expires-after="@TimeSpan.FromSeconds(5)"> <div custom-tag-helper-parm="9289"></div> </cache> 我现在有了一个HtmlHelper扩展方法来编写这段HTML: pub

Q:是否有方法使用IHtmlHelper扩展呈现标记帮助程序的输出

信息:我正在使用ASP.NET 5/MVC 6(vNext)在视图中渲染以下内容:

<cache expires-after="@TimeSpan.FromSeconds(5)">
    <div custom-tag-helper-parm="9289"></div>        
</cache>

我现在有了一个HtmlHelper扩展方法来编写这段HTML:

public static HtmlString RenderPortalContent(this IHtmlHelper HtmlHelper, string customTagHelperParm)
{              
        var output = $@"<cache expires-after='{@TimeSpan.FromSeconds(5)}'>
                            <div custom-tag-helper-parm = '{customTagHelperParm}'>
                            </div>
                        </cache>";      

        return new HtmlString(output);
}
publicstatichtmlstringrenderportalcontent(此IHTMlHelperHtmlHelper,字符串customTagHelperARM)
{              
变量输出=$@”
";      
返回新的HtmlString(输出);
}
目前,正如预期的那样,HTML是逐字输出的。换句话说,既不处理
也不处理
自定义标记帮助程序parm
标记帮助程序


有没有一种方法可以使用像这样的IHtmlHelper扩展来呈现标记帮助程序的输出?

如果我的理解是正确的,您希望执行以下操作

@Html.RenderPortalContent("blah")
在你看来。如果是这样,您可以这样做:

public static HtmlString RenderPortalContent(此IHtmlHelper htmlHelper,字符串参数)
{
var cache=新标记生成器(“缓存”);
Add(“过期时间”,TimeSpan.FromSeconds(5.Seconds.ToString());
var div=新标记生成器(“div”);
Add(“自定义标记辅助参数”,参数);
cache.InnerHtml.Append(div);
var writer=new System.IO.StringWriter();
WriteTo(writer,新的HtmlEncoder());
返回新的HtmlString(writer.ToString());
}
但是如果您想扩展标记以允许内部标记和更大的灵活性,您实际上需要编写自己的TagHelper。幸运的是,这些并不难写



编辑:您尝试过使用吗?

您到底想要实现什么?具体来说,您希望如何处理“CustomTagHelperArm”?您计划如何调用此帮助程序?您可以创建自己的标记帮助程序来呈现嵌套标记帮助程序,而不是呈现嵌套标记帮助程序的html帮助程序。例如,你最终想出了一个方法来做这件事吗?目前,我认为构建自定义taghelper是实现我想要的目标的唯一途径。不,我从来没有找到一个解决方案,只是最终解决了它。除非我遗漏了什么,否则这似乎仍然可以从字面上呈现构建的HTML。也就是说,我在最终的HTML中得到了一个实际的“”元素。如果我将“”元素直接放入视图文件中,它将被处理并替换为给定键的内存缓存中的内容。