2012-01-19 43 views
1

我想学习剃刀,但已经提出了反对语法问题。当我运行下面的代码:有条件的内部foreach内部条件与剃刀

@if (searchTerm != ""){ 
    <h2>Showing @ExamineManager.Instance.Search(searchTerm, true).Count() results for @searchTerm</h2> 
    <div class="search-results"> 
    @foreach (var result in ExamineManager.Instance.Search(searchTerm, true)) { 
     if (result.Fields["nodeTypeAlias"] == 'File'){ 
     <p>File</p> 
     }else{ 
     <p>Not file</p> 
     } 
    } 
    </div> 
} 

这个错误,说“太多字符字符文字”。代码的实际机制起作用,这只是条件嵌套方式的一个语法问题,我认为,但我已经尝试过@ {}块和各种行前缀的各种组合,但无法使其工作。

任何人都可以看到我在做什么错?

谢谢!

回答

1

那是因为你已经得到了比较

result.Fields["nodeTypeAlias"] == 'File' 

在C#中,你可以不写字符串转换为单引号一样, 。你应该改变它

result.Fields["nodeTypeAlias"] == "File" 
+0

啊哈!我最近花了很多时间在JavaScript上,很明显;)现在完美的工作,谢谢。 – Dan

-1

只需更改代码这样

@{ 

     if (searchTerm != ""){ 
     <h2>Showing @ExamineManager.Instance.Search(searchTerm, true).Count() results for @searchTerm</h2> 
     <div class="search-results"> 
     foreach (var result in ExamineManager.Instance.Search(searchTerm, true)) { 
      if (result.Fields["nodeTypeAlias"] == 'File'){ 
      <p>File</p> 
      } 
      else{ 
      <p>Not file</p> 
      } 
     } 
     </div> 
    } 


     } 

这个代码将会帮助你

+0

这相当于原来的代码,它只是一些更多的意大利面条添加到它。 –

2

'File'是无效的语法。你可能在你的if条件意味着"File"当你想使用字符串的工作:

if (result.Fields["nodeTypeAlias"] == "File")