2012-01-19 42 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")