我正在为一个奇怪的情况而苦苦挣扎。我有一组页面,我的意思是在Razor中迭代。我需要做两次,一次在脚本标签内,一次在外面。现在,我明白Razor是为了生成HTML而不是Javascript,但是这个工作正常,现在它正在破坏,我无法弄明白为什么。这是破解的代码:
<script type="text/javascript">
@foreach (string page in pages)
{
<text>
function @page() {
// something here
}
</text>
}
</script>
这很好用:
<div class="intro">
@foreach (string page in pages)
{
<div id="@page">
<!-- whatever -->
</div>
}
</div>
编译器错误消息:CS0118:'page'是'变量'但是被使用 像'方法'
并指出使用@page
。事实上,VS13也使用了变量,但仅在第一种情况下使用了!
这里发生了什么?
答案 0 :(得分:1)
试
<script type="text/javascript">
@foreach (string page in pages)
{
<text>
function @(page)() {
// something here
}
</text>
}
答案 1 :(得分:1)
公顷!我想到了。它需要一个血腥的空间,或某种表达终结者:
<text>
function @page () {
(注意@page之后的空格,这表示Razor表达式已经结束),或者:
<text>
function @(page)() {
当然,IDE仍然抱怨期望一个标识符(函数名称),但那是因为它并不意味着生成Javascript