我正在尝试学习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>
}
这个错误,说“字符文字中的字符过多”。代码的实际机制是有效的,它只是一个语法问题,我认为条件是嵌套的方式,但我已经尝试了@ {}块的各种组合,并将@预先添加到各个行,但只是无法让它工作
谁能看到我做错了什么?
谢谢!
答案 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>
}
}
这些代码可以帮助您