Почему я получаю, что j недействителен в начале блока кода. здесь?

У меня есть это в моем коде Index.cshtml (View):

<div class="col-md-6">
    <label class="control-label">Delivery Performance (report spans a number of days)</label>
    <br>
    <label>From</label>
    <select>
        @for (int i = 1; i <= @maxDaysBackForDeliveryPerformance; i++)
        {
            <option id="selItem_@(i) value=@"i">@i</option>
        }
    </select>
    <label>days back</label>
    <br>
    <label>To</label>
    <select>
        @for (int j = 1; j <= @maxDaysBackForDeliveryPerformance; j++)
        {
            <option id="selItem_@(j) value=@"j">@j</option>
        }
    </select>
    <label>days back</label>
    <br>
    <button id="btnTestDeliveryPerformanceSettings">Test Settings</button>
</div>

Это работало нормально (до добавления части внизу):

<div class="col-md-6">
    <label class="control-label">Delivery Performance (report spans a number of days)</label>
    <br>
    <label>From</label>
    <select>
        @for (int i = 1; i <= @maxDaysBackForDeliveryPerformance; i++)
        {
            <option id="selItem_@(i) value=@"i">@i</option>
        }
    </select>
    <label>days back</label>
</div>

... но когда я добавил практически идентичный код:

<br>
<label>To</label>
<select>
    @for (int j = 1; j <= @maxDaysBackForDeliveryPerformance; j++)
    {
        <option id="selItem_@(j) value=@"j">@j</option>
    }
</select>
<label>days back</label>
<br>
<button id="btnTestDeliveryPerformanceSettings">Test Settings</button>

... он терпит неудачу с этой ошибкой парсера. Я не вижу "j" в начале блока кода, который он видит?

Это строка (193), на которую она указывает:

<option id="selItem_@(j) value=@"j">@j</option>

Что пошло наперекосяк/юг?

ОБНОВИТЬ

Сдвиг знака @ внутри кавычек следующим образом:

<option id="selItem_@(j) value="@j">@j</option>

... переместил сообщение об ошибке на две строки вверх; теперь он жалуется на эту строку:

@for (int j = 1; j <= @maxDaysBackForDeliveryPerformance; j++)

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


person B. Clay Shannon    schedule 19.04.2016    source источник
comment
Должно быть id="selItem_@(j)" value="@j"   -  person    schedule 20.04.2016
comment
Тогда почему тот, что для меня, сработал?   -  person B. Clay Shannon    schedule 20.04.2016
comment
Это не так - у вас есть несоответствующие цитаты, и эту тоже нужно исправить. (Но почему вы не используете метод DropDownListFor() для генерации вашего выбора?)   -  person    schedule 20.04.2016
comment
Прошло много лет с тех пор, как я работал с этой технологией; спасибо за напоминание DropDownListFor().   -  person B. Clay Shannon    schedule 20.04.2016


Ответы (2)


Вы неправильно заключаете значения атрибутов Id и value в кавычки.

оберните вашу переменную в "" или ''.

@for (int i = 1; i <= maxDaysBackForDeliveryPerformance; i++)
{
     <option id="selItem_@(i)" value="@i">@i</option>
}
person Shyju    schedule 19.04.2016

Отдельный атрибут Id и Value

Id = "Некоторые" Значение = "Другие"

person Community    schedule 25.04.2016