我有一个 MVC3 项目,其中包含以下代码行,效果很好:
@if (this.Model.ShowAddButton)
{
@this.Html.ActionLink("Add", "Add")
}
我们的团队有一个编码指南,所有本地方法调用都需要带有前缀this
。到目前为止,这在 MVC3 中运行得很好。
我已按照以下指南手动将项目升级到 MVC4here http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253806。现在上面的代码出现错误并显示以下消息:
Unexpected "this" keyword after "@" character. Once inside code, you do not need to prefix constructs like "this" with "@".
我认为该错误消息具有误导性。这意味着这样做是合法的,但不是必要的。尽管我知道不需要遵守编码指南,但我还是故意这样做。解析器失败的事实,消息应该表明Once inside code, you cannot prefix....
我明白你不能使用@
在嵌套代码块中,问题不在于@
标志,但使用this
。添加this
该语句不会影响调用的结果,所以我不明白为什么它会抛出异常。我可以通过删除来解决这个问题this
:
@if (this.Model.ShowAddButton)
{
@Html.ActionLink("Add", "Add")
}
但这样做会与我们的编码准则相冲突。所以我的问题是,这是 MVC4 中故意更改的内容吗(因为它在 MVC3 中工作得很好)。或者这是 MVC4 中的一个错误?如果我删除if
块,我仍然可以使用this
关键词。
@this.Html.ActionLink("Add", "Add")