Asp.net mvc 分析错误,缺少关闭“}”&引用;

Asp.net mvc 分析错误,缺少关闭“}”&引用;,asp.net-mvc,Asp.net Mvc,我花了45分钟寻找丢失的结尾“}”,但我找不到它。我重写了代码,但仍然出现了这个错误。我做错了什么 分析器错误消息:foreach块缺少结束“}”字符。确保此块中的所有“{”字符都有一个匹配的“}”字符,并且“}”字符都没有被解释为标记 第9行:@foreach(模型中的变量项){ @foreach(模型中的变量项){ int checkId=item.Id; if(item.ReplyId==checkId){ 论坛 @DisplayFor(modeleItem=>item.Title) @

我花了45分钟寻找丢失的结尾“}”,但我找不到它。我重写了代码,但仍然出现了这个错误。我做错了什么

分析器错误消息:foreach块缺少结束“}”字符。确保此块中的所有“{”字符都有一个匹配的“}”字符,并且“}”字符都没有被解释为标记

第9行:@foreach(模型中的变量项){

@foreach(模型中的变量项){
int checkId=item.Id;
if(item.ReplyId==checkId){
论坛

@DisplayFor(modeleItem=>item.Title) @DisplayFor(modelItem=>item.Body) } } @foreach(模型中的var项2) { if(item2.ReplyId==checkId){ @DisplayFor(modeleItem=>item2.Body) } } @如果(请求已验证) { 字符串user=item.user; if(User.Identity.Name==User) { @ActionLink(“编辑”,“编辑”,新建{id=checkId})|

@ActionLink(“回复”,“回复”,新的{id=checkId})|

} @ActionLink(“返回列表”、“索引”) }
您必须将长闭包包装在@{}括号中。我认为这是您的问题:

@if (Request.IsAuthenticated) { 
    //... 
}
尝试:


使用
标记包装所有html/文本元素

此代码中缺少一个结束“/div:@html.DisplayFor(modelItem=>item2.Body)。这可能就是它出错的原因。

第一个区块是您未关闭的
div
,第二个区块是额外关闭的
/div
。Razor对这类事情非常挑剔


一旦你解决了这些问题,你会遇到一些其他语法问题,比如第三个代码块中没有定义
item
,但你应该能够处理这些问题。

我注意到你的代码中只在第一个@foreach上声明了checkId,然后在其他代码块上使用它。对,但这并没有导致问题,是吗?我注意到在打破整个系统的前端markup@Fals我同意你的看法。我不认为这是造成问题的原因,但可能是你的代码有问题,因为这个值对其他Blocks的家伙来说不正确。Hanks,这和Fals的评论修复了它。@NoahR你不需要用一组额外的大括号来包装这个块。Razor工作得非常好你拥有它的方式-如果(某物){}做
@if(某物){}
,这是很正常的,对于
foreach
或其他类似的语法也是一样的。
@if (Request.IsAuthenticated) { 
    //... 
}
@{ 
    if(Request.IsAuthenticated) { 
        //... 
    } 
}