#c# #asp.net-mvc #asp.net-mvc-3 #razor
#c# #asp.net-mvc #asp.net-mvc-3 #razor
Вопрос:
У меня есть некоторый код, который выходит из строя из-за ошибки:
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, потому что к тому времени, когда браузер интерпретирует код, синтаксис razor практически невидим.
Однако сообщение об ошибке, которое я получаю, исходит от компилятора, поэтому каким-то образом C # пытается ссылаться foo
. Чего мне не хватает и как мне изменить код, чтобы вывести правильный код javascript, чтобы он объединялся <li>bar</li>
, как я пытаюсь сделать?
Ответ №1:
Предполагается, что содержимое блока кода, такого как for
цикл, является кодом на стороне сервера.
Вам нужно явно указать Razor, что это разметка, используя <text>
специальный тег.
Комментарии:
1. Спасибо! Именно то, что я искал, и
<text></text>
и префикс ‘@:’ работают.
Ответ №2:
@{
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>";
теперь весь этот аспект рассматривается как razor, включая var foo
Комментарии:
1. Я думаю, что это противоположно тому, о чем спрашивает OP