Razor MVC3到MVC4 RTM手动升级问题:@在此关键字前抛出错误

Razor MVC3到MVC4 RTM手动升级问题:@在此关键字前抛出错误,razor,asp.net-mvc-4,Razor,Asp.net Mvc 4,我有一个MVC3项目,该项目有以下代码行,运行良好: @if (this.Model.ShowAddButton) { @this.Html.ActionLink("Add", "Add") } 我们的团队有一个编码准则,即所有本地方法调用都需要以this作为前缀。到目前为止,这在MVC3中运行良好 我已经使用来自的指导手动将项目升级到MVC4。现在,上面的代码出现错误,并显示以下消息: Unexpected "this" keyword after "@" character.

我有一个MVC3项目,该项目有以下代码行,运行良好:

@if (this.Model.ShowAddButton)
{ 
    @this.Html.ActionLink("Add", "Add")
}
我们的团队有一个编码准则,即所有本地方法调用都需要以
this
作为前缀。到目前为止,这在MVC3中运行良好

我已经使用来自的指导手动将项目升级到MVC4。现在,上面的代码出现错误,并显示以下消息:

Unexpected "this" keyword after "@" character.  Once inside code, you do not need to prefix constructs like "this" with "@".
我认为错误信息具有误导性。这意味着这样做是合法的,但不是必要的。我有意这样做,尽管我知道不需要遵守编码准则。解析器失败的事实是,消息应该指示
,一旦在代码内部,您就不能前缀….
我知道您不能在嵌套的代码块中使用
@
,问题不在于
@
符号,而在于
this
的使用。向语句中添加
this
不会影响调用的结果,因此我不理解它为什么会抛出异常。我可以通过删除此来解决此问题:

@if (this.Model.ShowAddButton)
{ 
    @Html.ActionLink("Add", "Add")
}
但这样做将与我们的编码准则相冲突。所以我的问题是,这是不是在MVC4中故意改变的(因为它在MVC3中工作得很好)。或者这是MVC4中的一个bug?如果我删除
If
块,我仍然可以使用
this
关键字

@this.Html.ActionLink("Add", "Add")
这实际上是MVC4中的一个。提交了一份文件

这两个解决办法是:

@if (this.Model.ShowAddButton)
{ 
    @Html.ActionLink("Add", "Add")
}


你们有并没有试着删除前面的@?那个是行不通的。如果这样做,代码将被执行,但不会呈现任何内容。@告诉响应调用的结果。我刚刚将我的项目从mvc3升级到mvc4,我也遇到了同样的问题。我使用resharper 7清理视图文件,在清理配置中,在每个“Html”之前添加一个“this”。我在整个项目中查找并替换'this.Html'为'Html',它解决了这个问题。这是一个问题,但我更改了我的重竖琴配置,以防止添加“this”add。它不是完美的。我很惊讶这个问题被否决了。有人有同样的问题吗??谢谢你,克里斯+1我正在使用:
@@(this.Html.ActionLink(“添加”、“添加”))
@if (this.Model.ShowAddButton)
{ 
    @(this.Html.ActionLink("Add", "Add"))
}