Razor syntax to render section based on condition

2020-02-23 06:49发布

问题:

I got a view with Layout defined. In the layout, there is a section:

@RenderSection("JavaScript", required: false)

In the view, based on a condition, I want to either render certain JavaScript to the section or not.

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

The above syntax is wrong. What's the correct syntax?

Edit

Basically, I got a partial view which needs to be rendered based on a condition. If the condition is true, then I need to render the partial view together with some JavaScript for the partial view, which I want to go to the "JavaScript" section. How can I do that?

回答1:

@section blocks can only appear in markup contexts.

You can write

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


回答2:

@if(condition) RenderSection(..)

@Section Javascript{ 
        <script type="text/javascript>
           $(document).ready(function(){
             //bla...
           });
        </script>
}

or in your layout:

@RenderSection(..)

and in your view:

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

also see: Is there a way to make a @section optional with the asp.net mvc Razor ViewEngine?