3

我尝试用剃刀生成 javascript:

<script>
  var slides =
  [
    @foreach (var news in Model.News)
    {
      @:data.push(
      {
        fileID: @(news.FileID),
        preamble: "@(news.Preamble)",
        img: "/Admin/News/NewsPng/@(news.NewsID)"
      });
    }
  ];
</script>

我收到语法错误

  • “@”(意外标记)和行尾的“,”(; 预期)上的 fileID 行。
  • “,”(;预期)上的序言行
  • img 行,在最后一个引号 (; 预期) 之后
  • }); “)”上的行(意外标记)
  • 这 ]; “]”上的行(语法错误)

Visual Studio 2012 似乎不接受我的很多剃须刀代码。也许还值得注意的是,我正在使用 R#(如果这是一个问题)。

除了为什么会出现所有这些错误消息的明显问题之外,我还想知道是什么让 Visual Studio 真正接受我尝试运行它。

所有这些编译错误,Visual Studio 实际运行它?为什么?

当我运行代码时,我收到以下错误:

CS1646: Keyword, identifier, or string expected after verbatim specifier: @

并且 fileID 行被突出显示。

Razor 可能是一个非常好的东西,但到目前为止,它让我有些头疼。也许我只是在做一些愚蠢的事情......

4

1 回答 1

3

尝试<text>

<script> 
  var slides = 
  [ 
    @foreach (var news in Model.News) 
    { 
      <text>
      data.push( 
      { 
        fileID: @(news.FileID), 
        preamble: "@(news.Preamble)", 
        img: "/Admin/News/NewsPng/@(news.NewsID)" 
      });
      </text>
    } 
  ]; 
</script> 

但是你的语法是错误的,你会在 javascript 中得到错误。

添加:

像这样的东西会起作用:

<script> 
    var slides = [];
    @foreach (var news in Model.News) 
    { 
      <text>
      slides.push({...});
      </text>
    } 
</script> 
于 2012-10-15T18:42:28.833 回答