Вам нужно обернуть его в псевдоэлемент <text>
.Это переключит синтаксический анализатор обратно в режим HTML, а затем проанализирует JavaScript как часть HTML, а не как C #.Причина, по которой это происходит, заключается в том, что @for()
является блоком ac #, и все, что обрабатывается внутри, также считается c #, пока не будет экранировано html-тегом.Поскольку вам, вероятно, не нужен html-тег, бритва предоставляет тег <text>
для переключения режимов.
Если вы заметили разницу в ваших веб-формах asp.net, вы заканчиваете строку <% for
с помощью %>
который выводит его из режима C #.Если вы загрузите расширение Razor Highlighter для Visual Studio 2010, оно поможет вам понять, когда код обрабатывается как код, а html - как html.
<script type="text/javascript">
var jqGridIdList = "@Url.Action("getidlist", "office", new { area = "reports" })";
var availableIds = [];
@for(var i = 0; i < Model.Data.Count (); i++) {
<text>availableIds.push({ value : "@Model.Data.ElementAt(i).Text", label : "@Model.Data.ElementAt(i).Text" });</text>
}
</script>
Обновление для последней версии
теперь используйте синтаксис @:
для еще большей читаемости
<script type="text/javascript">
var jqGridIdList = "@Url.Action("getidlist", "office", new { area = "reports" })";
var availableIds = [];
@for(var i = 0; i < Model.Data.Count (); i++) {
@:availableIds.push({ value : "@Model.Data.ElementAt(i).Text", label : "@Model.Data.ElementAt(i).Text" });
}
</script>