代码之家  ›  专栏  ›  技术社区  ›  DaveShaw Thishin

Razor编译错误

  •  4
  • DaveShaw Thishin  · 技术社区  · 14 年前

    我有Razor代码的以下部分,它在运行时由于编译错误而失败:

    @foreach(var stat in Model){
                <li>
                    @stat.EffectiveDate.ToShortDateString() - @stat.EventType.Description <br />
                    TimeTaken: 
                    @if (@stat.TimeTaken.Hours > 0) {
                        @stat.TimeTaken.Hours hours
                    }
                    @stat.TimeTaken.Minutes minutes 
                    @stat.TimeTaken.Seconds seconds.
                </li>
            }
    

    错误出现在 @stat.TimeTaken.Hours hours 线

    CS1002:;应为

    删除文字 hours 修正它。

    我困惑不解。

    编辑: 这是从“@if”到“seconds”的编译输出。

    Line 180:       if (@stat.TimeTaken.Hours > 0) {
    Line 181:                   
    Line 182:              
    Line 183:              #line default
    Line 184:              #line hidden
    Line 185:              
    Line 186:              #line 29 "c:\documents and settings\dave\my documents\visual studio 2010\Projects\SportStats\SportStats\Views\Stats\Index.cshtml"
    Line 187:  this.Write(stat.TimeTaken.Hours);
    Line 188:              
    Line 189:              #line default
    Line 190:              #line hidden
    Line 191:              
    Line 192:              #line 29 "c:\documents and settings\dave\my documents\visual studio 2010\Projects\SportStats\SportStats\Views\Stats\Index.cshtml"
    Line 193:                             hours
    Line 194:               }
    Line 195:  
    Line 196:              
    Line 197:              #line default
    Line 198:              #line hidden
    Line 199:              
    Line 200:              #line 31 "c:\documents and settings\dave\my documents\visual studio 2010\Projects\SportStats\SportStats\Views\Stats\Index.cshtml"
    Line 201:              this.WriteLiteral("\t\t\t\t");
    Line 202:              
    Line 203:              #line default
    Line 204:              #line hidden
    Line 205:              
    Line 206:              #line 31 "c:\documents and settings\dave\my documents\visual studio 2010\Projects\SportStats\SportStats\Views\Stats\Index.cshtml"
    Line 207:  this.Write(stat.TimeTaken.Minutes);
    Line 208:              
    Line 209:              #line default
    Line 210:              #line hidden
    Line 211:              
    Line 212:              #line 31 "c:\documents and settings\dave\my documents\visual studio 2010\Projects\SportStats\SportStats\Views\Stats\Index.cshtml"
    Line 213:              this.WriteLiteral(" minutes \r\n\t\t\t\t");
    Line 214:              
    Line 215:              #line default
    Line 216:              #line hidden
    Line 217:              
    Line 218:              #line 32 "c:\documents and settings\dave\my documents\visual studio 2010\Projects\SportStats\SportStats\Views\Stats\Index.cshtml"
    Line 219:  this.Write(stat.TimeTaken.Seconds);
    Line 220:              
    Line 221:              #line default
    Line 222:              #line hidden
    Line 223:              
    Line 224:              #line 32 "c:\documents and settings\dave\my documents\visual studio 2010\Projects\SportStats\SportStats\Views\Stats\Index.cshtml"
    Line 225:              this.WriteLiteral(" seconds.\r\n\t\t\t</li>\r\n");
    
    2 回复  |  直到 14 年前
        1
  •  4
  •   dtb    14 年前

    尝试:

    @if (stat.TimeTaken.Hours > 0) {
        <text>@stat.TimeTaken.Hours hours</text>
    }
    
        2
  •  5
  •   Kelsey    14 年前

    我认为你需要摆脱在线的@

    @if(@stat.timetaken.hours>0){
    < /代码> 
    
    <>:

    @if(stat.timetaken.hours>0){
    < /代码> 
    
    

    编辑:just lookin atscottgu's blog(see the section marked“identifying nested content”)and this was of interest:。

    < Buff行情>

    您可以选择包装嵌套内容 在以下情况下使用块 你有你想要的内容 在没有 包装标签:

    < /块引用>

    并查看它正下方的if语句的代码示例。

    @if (@stat.TimeTaken.Hours > 0) {

    成功:

    @if (stat.TimeTaken.Hours > 0) { 
    

    编辑:只是看着ScottGu's blog(请参见标记为“标识嵌套内容”的部分),这是一个有趣的部分:

    您可以选择包装嵌套内容 在以下情况下使用块 你有你想要的内容 在没有 包装标签:

    并查看它正下方if语句的代码示例。

    alt text