有条件的内部foreach内部条件与Razor

时间:2012-01-19 13:27:45

标签: asp.net-mvc asp.net-mvc-3 syntax razor conditional

我正在尝试学习Razor,但遇到了语法问题。当我运行以下代码时:

@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>
}

这个错误,说“字符文字中的字符过多”。代码的实际机制是有效的,它只是一个语法问题,我认为条件是嵌套的方式,但我已经尝试了@ {}块的各种组合,并将@预先添加到各个行,但只是无法让它工作

谁能看到我做错了什么?

谢谢!

3 个答案:

答案 0 :(得分:2)

'File'语法无效。当你想使用字符串时,你可能在"File"条件下意味着if

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

答案 1 :(得分:1)

那是因为你有比较

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

在c#中,你不能将字符串写成单引号。你应该把它改成

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

答案 2 :(得分:-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>
    }


        }

这些代码可以帮助您