Условный внутри foreach внутри условный с Razor - PullRequest
1 голос
/ 19 января 2012

Я пытаюсь выучить 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 ]

2 голосов
/ 19 января 2012

'File' неверный синтаксис.Возможно, вы имели в виду "File" в вашем if состоянии, когда вы хотите работать со строками:

if (result.Fields["nodeTypeAlias"] == "File")
1 голос
/ 19 января 2012

Это потому что у вас есть сравнение

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

В c # нельзя писать строки в одинарных кавычках. Вы должны изменить его на

result.Fields["nodeTypeAlias"] == "File"
0 голосов
/ 19 января 2012

Просто измените код.

    @{

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


        }

Этот код поможет вам

...