【问题标题】:Razor: Render does not work inside code blockRazor:渲染在代码块内不起作用
【发布时间】:2014-05-15 21:20:20
【问题描述】:

如果我这样做,这对我来说似乎很奇怪

@RenderSection("scripts", required: false)

那么它工作得很好,但如果我这样做了

@{
    RenderSection("scripts", required: false);
}

然后脚本部分将不会被渲染,我会得到“以下部分已定义但尚未为布局页面渲染“~/Views/Shared/_Layout.cshtml”:“脚本”。”错误

知道为什么 RenderSection/Script.Render 不能在代码块内吗?

编辑: 我试图在代码块中放置一个断点,当页面加载时断点被击中,并且 RenderSection 方法执行没有任何异常

【问题讨论】:

    标签: c# asp.net razor


    【解决方案1】:

    RenderSection 不写任何东西。相反,此方法返回一个实现IHtmlStringHelperResult,并且可以使用其WriteTo 方法呈现到页面。

    @{
        HelperResult renderSection = RenderSection("scripts", required: false);
        renderSection.WriteTo(Output);
    }
    

    当使用@RenderSection 时,它会自动将其呈现到页面

    【讨论】:

    • 所以这意味着@和@{}语法在某些方面实际上是不同的?
    • @Steve 他们非常不同。 @{} 是代码块,@ 不是
    • @RenderSection@(RenderSection) 是等价的,但 @{RenderSection} 完全不同。
    • @ErikFunkenbusch 介意指出这两者之间的区别吗?一直以为他们会做同样的事情,除了一个是一条线,另一个是多条
    猜你喜欢
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多