4

我有一个 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 "@".

我认为错误信息具有误导性。这意味着这样做是合法的,但不是必需的。即使我知道不需要遵守编码准则,我也是故意这样做的。解析器失败的事实,消息应该表明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")
4

1 回答 1

4

这实际上是MVC4 中的一个错误。提交了一份报告

两种解决方法是:

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

或者

@if (this.Model.ShowAddButton)
{ 
    @(this.Html.ActionLink("Add", "Add"))
}
于 2012-09-28T12:55:05.837 回答