我有一个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”添加到语句中不会影响调用的结果,因此我不明白为什么会抛出异常。我可以通过删除“this”来解决这个问题:
@if (this.Model.ShowAddButton)
{
@Html.ActionLink("Add", "Add")
}
但是这样做会与我们的编码规范产生冲突。所以我的问题是,这是MVC4中故意更改的内容(因为在MVC3中它运行得很好)。还是这是MVC4中的一个错误?如果我删除if
块,我仍然可以使用this
关键字。
@this.Html.ActionLink("Add", "Add")