MVC3到MVC4 RTM手动升级问题:@这个关键字抛出错误的前面(MVC3 to MVC4 RTM

2019-07-31 14:30发布

我有一个有哪些工作就好了下面的一行代码一个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")

Answer 1:

这其实是一个错误的MVC4。 一个报告被提交。

这两种变通是:

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

要么

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


文章来源: MVC3 to MVC4 RTM Manual Upgrade issue: @ in front of this keyword throwing error