Каков правильный синтаксис бритвы для вложенных и смешанных блоков кода?

У меня есть синтаксис бритвы, который вложен и смешан с 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>
}

1 ответ

Решение

У вас есть дополнительный @ на этой линии:

@if (ViewBag.Searched)

и эта строка:

@if (ViewBag.PendingRequest)

Потому что вы уже в коде бритвы (регулируется родителем if/else заявления).

На самом деле, это все еще убивает формат. Хотя, если вы попробуете использовать <text> теги вместо @: оно работает. Попробуй это:

$(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>
            }
        }
    });

Примите к сведению: Visual Studio всегда делает отступы от просмотра бритвы плохо:)

Другие вопросы по тегам