C# 嵌套和混合代码块的正确razor语法是什么?

C# 嵌套和混合代码块的正确razor语法是什么?,c#,asp.net-mvc,razor,asp.net-mvc-4,razor-2,C#,Asp.net Mvc,Razor,Asp.net Mvc 4,Razor 2,我有razor语法,它嵌套并与html和javascript混合在一起 它运行得很好,除了当我使用自动代码格式时,}总是被推到不合适的位置 @section js{ <script type="text/javascript"> $(document).ready(function () { @if (ViewBag.Searched && ViewBag.Found) {

我有razor语法,它嵌套并与html和javascript混合在一起

它运行得很好,除了当我使用自动代码格式时,
}
总是被推到不合适的位置

@section js{
    <script type="text/javascript">
        $(document).ready(function () {

            @if (ViewBag.Searched && ViewBag.Found)
            {
                @:$('#found').show(); $('#permit-info').show();

                @if (ViewBag.PendingRequest)
                {
                    @:$('#request-info').hide(); $('#report-info').show();
                }
                else
                {
                    @:$('#request-info').show(); $('#report-info').hide();
                }
            }
            else
            {
                @if (ViewBag.Searched)
                {
                    @:$('#not-found').show();
                            } // <----- PROBLEM. this } doesn't stay at the right place.
            }
        });
    </script>
}
@section js{
$(文档).ready(函数(){
@if(ViewBag.Searched&&ViewBag.Found)
{
@:$(“#找到”).show();$(“#许可证信息”).show();
@if(ViewBag.PendingRequest)
{
@:$(“#请求信息”).hide();$(“#报告信息”).show();
}
其他的
{
@:$(“#请求信息”).show();$(“#报告信息”).hide();
}
}
其他的
{
@如果(ViewBag.Searched)
{
@:$(“#未找到”).show();

}//您在这一行有一个额外的
@

@if (ViewBag.Searched)
@if (ViewBag.PendingRequest)
这一行:

@if (ViewBag.Searched)
@if (ViewBag.PendingRequest)
因为您已经在razor代码中(由父级
if
/
else
语句控制)

实际上,这仍然会破坏格式。尽管,但如果您尝试使用
标记而不是
@:
,它仍然有效。请尝试以下方法:

$(document).ready(function () {

        @if (ViewBag.Searched && ViewBag.Found)
        {
            <text>$('#found').show(); $('#permit-info').show();</text>

            if (ViewBag.PendingRequest)
            {
                <text>$('#request-info').hide(); $('#report-info').show();</text>
            }
            else
            {
                <text>$('#request-info').show(); $('#report-info').hide();</text>
            }
        }
        else
        {
            if (ViewBag.Searched)
            {
                <text>$('#not-found').show();</text>
            }
        }
    });
$(文档).ready(函数(){
@if(ViewBag.Searched&&ViewBag.Found)
{
$(“#找到”).show();$(“#许可证信息”).show();
if(ViewBag.PendingRequest)
{
$(“#请求信息”).hide();$(“#报告信息”).show();
}
其他的
{
$(“#请求信息”).show();$(“#报告信息”).hide();
}
}
其他的
{
如果(ViewBag.Searched)
{
$(“#未找到”).show();
}
}
});

请注意:Visual Studio总是将razor视图缩进得很差:)

我删除了它,但仍然有同样的问题。@RayCheng我刚刚编辑过,你实际上有两行额外的
@
@RayCheng它可以为我使用
标记。检查我的新编辑:)这很有效,但为什么?
不是有效的html标记,但也不是razor标记。@RayCheng
是razor的一部分,它是s是
@:
的替代方案(通常对多行语句更有用)