我有一个MVC3项目,其中包含以下代码,它们运行得很好:
@if (this.Model.ShowAddButton)
{
@this.Html.ActionLink("Add", "Add")
}
我们的团队有一个编码指南,所有本地方法调用都需要以this
为前缀。到目前为止,这在MVC3中运行得很好。
我使用here的指导手动将项目升级到MVC4。现在上面的代码错误输出以下消息:
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")