ASP.NET MVC Razor 不接受我的有效标记

标签 asp.net asp.net-mvc razor

我非常喜欢 Razor 语法,但它确实不够完美。例如,我有以下标记 block 。

@if (Model.FeaturedDestinations != null && Model.FeaturedDestinations.Count() > 0)
{
    int column = 0;

    foreach (var d in Model.FeaturedDestinations)
    {
        column++;
        if (column > 4)
        {
            </div>
            @{ column = 1; }
        }
        if (column == 1)
        {
            @:<div class="row-fluid">
        }
        <div class="span3">
            @RenderDestination(d)
        </div>
    }
    </div>
}

所以,编辑器给了我波浪线,表明我有一个结局 <div>标签位于开头标签之前。我可以忍受这一点。但是当我运行该应用程序时,我实际上收到以下运行时错误:

Encountered end tag "div" with no matching start tag. Are your start/end tags properly balanced?

显然,我无法忍受这一点!那么处理这种情况有什么技巧吗?就我想要的标记而言,我知道我在做什么。但 Razor 不这么认为,它正在接管。

为什么 MVC 会浪费周期检查平衡标签?

最佳答案

由于我不明白的原因,以下更正了该问题:

@if (Model.FeaturedDestinations != null && Model.FeaturedDestinations.Count() > 0)
{
    int column = 0;

    foreach (var d in Model.FeaturedDestinations)
    {
        column++;

        if (column > 4)
        {
            @:</div>
            column = 1;
        }

        if (column == 1)
        {
            @:<div class="row-fluid">
        }
        <div class="span3">
            @RenderDestination(d)
        </div>
    }
    @:</div>
}

请注意在几个标记之前添加@:。我不知道为什么这些是必要的 - Razor 突出显示表明它识别出这些是标签而不是代码。

另外,为什么这会使错误消失?导致运行时错误的事情没有改变。也许有人可以帮我填补这个空白。

关于ASP.NET MVC Razor 不接受我的有效标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10610344/

相关文章:

asp.net - 将 ASP.NET 从 RC1 升级到核心后出现 Razor 异常

asp.net - WebActivatorEx.ActivationManager 类型错误引发异常...参数计数不匹配

asp.net - 使用发布网站时,是否可以包含使用Unity引用的程序集?

sql - 如何将日期与当前时间一起保存到数据库中?

javascript - 在 mvc View 中显示/隐藏文本区域

c# - 应用插件系统

c# - 无法动态地向页面添加控件

asp.net-mvc - 从 View 访问POST值

asp.net-mvc - 如何使用 Razor 将未编码的 Json 写入我的 View ?

asp.net - 如何在索引和编辑 View (强绑定(bind))中传递和合并 MVC3 中的两个模型?