【问题标题】:Stuck With ASP.NET MVC Razor Syntax卡在 ASP.NET MVC Razor 语法中
【发布时间】:2011-11-19 17:56:56
【问题描述】:

构建一个快速视图,该视图将显示所有日期的列表,但仅在星期几发生变化时呈现标题。为什么我得到 foreach 的语法错误?任何帮助将不胜感激!

@{
    int lastDay = 0; 
}
@foreach (var grouping in Model.EventTemplate.EventTemplateSlots) {
    if (grouping.Day != lastDay) {
        if (lastDay != 0) {
            </div>
        }
        <div style="margin: 5px;"><div class="ui-widget-header ui-corner-all" style="padding: 5px;">@(((DateTime)Model.StartDate).AddDays(grouping.Day).ToShortDateString())</div>
        lastDay = grouping.Day;
    }
}

【问题讨论】:

  • 愿意与我们分享语法错误吗?

标签: asp.net-mvc syntax razor


【解决方案1】:

Razor 不能以这种方式工作。 HTML 元素不能像你拥有的那样分离。你有一个赤裸裸的&lt;/div&gt;

if (lastDay != 0) {
    </div>
}

这是无效的,因为 HTML 标记需要与 C# 大括号类似地匹配(它们需要处于同一嵌套级别,并且结束标记不能在词法上出现在开始标记之前)。我不清楚你为什么使用lastDay 检查。为什么不这样写呢?

@foreach (var grouping in Model.EventTemplate.EventTemplateSlots) {
    if (grouping.Day != lastDay) {
        <div style="margin: 5px;">
            <div class="ui-widget-header ui-corner-all" style="padding: 5px;">@(((DateTime)Model.StartDate).AddDays(grouping.Day).ToShortDateString())</div>
        </div>
    }
}

这样,开始/结束 HTML 标记可以根据需要匹配。

【讨论】:

    【解决方案2】:

    您的模型是否实现了IEnumerable?否则,您将无法在 foreach 循环中对其进行迭代。

    您看到的错误是什么?请在您的问题中发布。

    【讨论】:

      【解决方案3】:

      这应该可行:

      @{ 
          int lastDay = 0;  
      
          <div style="margin: 5px;">
              @foreach (var grouping in Model.EventTemplateSlots)
              {
                  if (grouping.Day != lastDay)
                  { 
                  <div class="ui-widget-header ui-corner-all" style="padding: 5px;">
                      @(((DateTime)Model.StartDate).AddDays(grouping.Day).ToShortDateString())
                  </div>
                      lastDay = grouping.Day;
                  }
              }
          </div> 
      }
      

      Razor 更喜欢 HTML 标记正确匹配以解析视图。

      另请注意,在您的示例中,如果您的 EventTemplateSlots 集合中没有重复日,您将永远不会获得结束 div 标记。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-15
        • 1970-01-01
        • 1970-01-01
        • 2011-05-25
        • 1970-01-01
        相关资源
        最近更新 更多