Смущает переменная область видимости при смешивании Javascript и Razor в ASP.NET MVC3 - PullRequest
2 голосов
/ 07 ноября 2011

У меня есть код, который не работает из-за ошибки:

The name 'foo' does not exist in the current context 

Это из-за проблемы с областью видимости переменной, из-за которой я запутался.Я подумал, что это должно сработать:

var foo = "<ul>";

@for (int i = 0; i < 10; i++)
{
    foo += "<li>bar</li>";
}
foo += "</ul>";

Синтаксис Razor должен вызывать цикл for, а переменная foo все еще будет находиться в области видимости с точки зрения javascript, поскольку к тому времени, когда браузер интерпретирует кодсинтаксис бритвы по существу невидим.

Тем не менее, я получаю сообщение об ошибке от компилятора, так что C # каким-то образом пытается сослаться на foo.Чего мне не хватает, и как мне изменить код, чтобы получить правильный вывод кода javascript, чтобы он объединял <li>bar</li>, как я пытаюсь сделать?

Ответы [ 2 ]

5 голосов
/ 07 ноября 2011

Предполагается, что содержимое кодового блока, такого как цикл for, является кодом на стороне сервера.

Вам необходимо явно указать Razor, что это разметка с использованием <text>специальный тег .

0 голосов
/ 07 ноября 2011
@{
var foo = "<ul>";

for (int i = 0; i < 10; i++)
{
    foo += "<li>bar</li>";
}
foo += "</ul>";

}

или это

@var foo = "<ul>";

@for (int i = 0; i < 10; i++)
{
    foo += "<li>bar</li>";
}
foo += "</ul>";

теперь весь этот аспект считается бритвой, включая var foo

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