不能用剃刀写这个简单的行代码

时间:2011-09-21 08:09:59

标签: .net asp.net-mvc razor

我正在尝试在razor页面中编写下面的简单代码,但它总是会出错。

( @gallery.Images.Count images )   // expect : ( 23 images )

但奇怪的是,下面的代码工作

(@Model.RateCount rates)

我收到编译错误而不是运行时异常

完整的cshtml页面如下所示。

@using Something.UI.Models.ViewModels
@model List<ImageGalleryUI>
<div class="albumlist">
    @foreach (ImageGalleryUI gallery in Model)
    {

        <a href="@Html.ActionLinkRef(gallery.DisplayAction)">
            <img src="@gallery.AlbumImageSrc" alt="@gallery.AlbumName" width="150px"/>
        </a>
        @Html.ActionLink(gallery.DisplayAction) 
        ( @gallery.Images.Count images )
    }
</div>

这是错误

Compilation Error

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

Compiler Error Message: CS1646: Keyword, identifier, or string expected after verbatim specifier: @

Source Error:


Line 9:          </a>
Line 10:         @Html.ActionLink(gallery.DisplayAction) 
Line 11:         ( @{gallery.Images.Count} images )
Line 12:     }
Line 13: </div>

3 个答案:

答案 0 :(得分:5)

如果你在顶部没有做过这样的事情

@{
   gallery = new ...
}

然后画廊不存在。

您确定不是@Model.gallery.Images.Count吗?

修改

尝试替换

( @gallery.Images.Count images )

使用

@: ( @gallery.Images.Count images )

应该运作得很好。问题是Razor正在解释(作为代码的一部分,而不是作为输出的一部分。放置@:让Razor知道此行上的内容是输入应该进入响应流。

答案 1 :(得分:0)

试试这个

(@{Model.gallery.Images.Count} images)

答案 2 :(得分:0)

在我看来,你在第一个陈述中缺少模型部分

(@Model.gallery.Images.Count images )