MVC3到MVC4 RTM手动升级问题:@此关键字前面抛出错误

2024-04-14

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

这实际上是一个bug https://twitter.com/anurse/status/250612012357390338在MVC4中。 Areport http://aspnetwebstack.codeplex.com/workitem/458被提起。

两个解决方法是:

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

OR

@if (this.Model.ShowAddButton)
{ 
    @(this.Html.ActionLink("Add", "Add"))
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVC3到MVC4 RTM手动升级问题:@此关键字前面抛出错误 的相关文章

随机推荐