【问题标题】:Razor syntax to render section based on condition根据条件呈现部分的 Razor 语法
【发布时间】:2011-05-12 18:29:07
【问题描述】:

我得到了一个定义了布局的视图。在布局中,有一段:

@RenderSection("JavaScript", required: false)

在视图中,根据条件,我想要么将某些 JavaScript 渲染到该部分。

@if (condition)
{ 
    @section JavaScript
    {
        <script type="text/javascript>
           $(document).ready(function(){
             //bla...
           });
        </script>
    }
}

上面的语法是错误的。正确的语法是什么?

编辑

基本上,我得到了一个需要根据条件渲染的局部视图。如果条件为真,那么我需要将部分视图与部分视图的一些 JavaScript 一起渲染,我想转到“JavaScript”部分。我该怎么做?

【问题讨论】:

    标签: asp.net-mvc-3 razor


    【解决方案1】:

    @section 块只能出现在标记上下文中。

    你可以写

    @if (condition)
    { 
        <text>
            @section JavaScript
            {
                <script type="text/javascript>
                   $(document).ready(function(){
                     //bla...
                   });
                </script>
            }
        </text>
    }
    

    【讨论】:

    • 这看起来不错!为我工作。
    • 知道怎么做就这么简单:o)
    • 您还可以使用注释来更改标记上下文,这样您就不需要虚假标记,即。 @if (condition) { \@section JavaScript
    • @Deeksy: &lt;text&gt; 是 Razor 标签;它不会在输出中发出。
    【解决方案2】:

    @if(condition) RenderSection(..)

    @Section Javascript{ $(文档).ready(函数(){ //废话... }); 脚本> }

    或在您的布局中:

    @RenderSection(..)

    在你看来:

    @section Javascript{ 如果(条件) {

    【讨论】:

    • 这是在布局里面吗?布局不知道条件。
    • 那么你的情况在你的部分之内,而不是你在上面的其他方式。
    • 好的。本质上,我在视图中有一个条件。如果是真的,我需要渲染一个局部视图和一些 JavaScript 用于局部视图。那么,在视图级别,我如何指定是否渲染该部分?
    • 在视图中只是有 @if(condition){RenderSection(....)} 还是你指的是别的东西?
    • RenderSection(....) 是 Layout 内部的一行代码。 @section SectionName{....} 是视图内的代码。将 RenderSection() 放入视图会导致无法直接请求文件“~/Views/MyView/Bla.cshtml”,因为它调用了“RenderSection”方法。您的示例在布局内部有一个条件。我需要在 View 中有这个条件。还是我没有得到什么?
    猜你喜欢
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多