Вложенное условие не распознается должным образом - PullRequest
0 голосов
/ 13 мая 2011

Я пытаюсь вложить foreach в if / else, используя Razor, но у меня возникают некоторые проблемы с Razor, утверждающим, что у меня отсутствует закрывающая скобка. Ниже приведен код, где я заметил «остальное», которое не выделяется синтаксисом в Visual Studio, и я предполагаю, что именно в этом заключается проблема:

    @if (ViewBag.user.administrativeRole != null)
    {
        <select name="administrativeRole" id="administrativeRole" class="selectInput" disabled="disabled">   
    }
    else // this else isn't syntax highlighted 
    {
        <select name="administrativeRole" id="administrativeRole" class="selectInput">
        @foreach (var role in ViewBag.roles)
        {
        if (ViewBag.user.administrativeRole != null && ViewBag.user.administrativeRole == role.superadmin)
        {
            <option value="@role.id" selected="selected">@role.name</option>
        }
        else
        {
            <option value="@role.id">@role.name</option>
        }
    }
}
</select>

, которая генерирует следующую ошибку:

В блоке if отсутствует закрывающая "}" персонаж. Убедитесь, что у вас есть соответствующий символ "}" для всех символы "{" в этом блоке и что ни один из символов "}" не является интерпретируется как разметка.

Line 58: @if (ViewBag.user.administrativeRole != null)
Line 59: {
Line 60:    <select name="administrativeRole" id="administrativeRole" class="selectInput" disabled="disabled">  

Есть мысли? Полагаю, я просто немного изменил синтаксис, так как я новичок в Razor.

Ответы [ 3 ]

5 голосов
/ 14 мая 2011

Slaks работает с Html.DropDown, но если вы настроили использовать код так, как вы его описали, попробуйте это так:

    @{
        if (ViewBag.user.administrativeRole != null)
        {
            @:<select name="administrativeRole" id="administrativeRole" class="selectInput" disabled="disabled">   
        }
        else  
        {
            @:<select name="administrativeRole" id="administrativeRole" class="selectInput">
            foreach (var role in ViewBag.roles)
            {
                 if (ViewBag.user.administrativeRole != null ViewBag.user.administrativeRole == role.superadmin)
                 {
                     @:<option value="@role.id" selected="selected">@role.name</option>
                 }
                 else
                 {
                    @:<option value="@role.id">@role.name</option>
                 }
            }
        }
     }
 </select>

Что делает блок кодаа затем уберите то, что вы действительно хотите напечатать в вашей разметке.

1 голос
/ 13 мая 2011

Ваш </select> находится не в том месте.

Это должно быть после второй }, на том же уровне, что и <select>.

Поскольку это не так, Razor обрабатывает последний } как разметку, а не как код, поэтому внешний if не закрывается.

Кроме того, вы должны позвонить Html.DropDown вместо.

0 голосов
/ 13 мая 2011

Где ваша заключительная скобка для if. Возможно, мой дисплей телефона не прокручивается к нему, но я вижу, что один отсутствует

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...