将@RenderSection添加到 html 帮助程序



我需要将代码添加到我的 html 助手中,以生成以下 html 的等效项:

<div id="buttonrow">@RenderSection("ButtonRow", false)</div>

这可能吗?

这行不通...

public static MvcHtmlString ButtonRow(this HtmlHelper helper)
{  
TagBuilder buttonRow = new TagBuilder("div");
buttonRow.GenerateId("buttonRow");
buttonRow.InnerHtml = "@RenderSection('ButtonRow', false)";
return MvcHtmlString.Create(buttonRow.ToString(TagRenderMode.Normal));
}

@RenderSection是服务器生成的代码片段。也就是说,当视图由 Razor 引擎呈现时,它会将@和其他特殊的 Razor 标记内容视为要分析的代码片段。

当你写类似的东西时

buttonRow.InnerHtml = "@RenderSection('ButtonRow', false)";

您只需将原始字符串写入 HTML,Razor 不会解析该字符串。

在布局页面之外呈现一个部分,如下所示:

public static IHtmlString RenderSectionCustom(this HtmlHelper html)
{
    WebViewPage page = html.ViewDataContainer as WebViewPage;
    var section = page.RenderSection("CustomTop", false);
    return section == null ? MvcHtmlString.Empty : MvcHtmlString.Create(section.ToHtmlString());
}
public static IHtmlString DefineSectionCustom(this HtmlHelper html)
{
    WebViewPage page = html.ViewDataContainer as WebViewPage;
    page.DefineSection("CustomTop", () =>
    {
        page.Write(MvcHtmlString.Create(" hello world (custom top section from HTML HELPER)!"));
    });
    return MvcHtmlString.Empty;
}

相关内容

  • 没有找到相关文章

最新更新