加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 06:22:27 所属栏目:asp.Net 来源:网络整理
导读:我有一个MVC3项目,其中包含以下代码,它们运行得很好: @if (this.Model.ShowAddButton){ @this.Html.ActionLink("Add","Add")} 我们的团队有一个编码指南,所有本地方法调用都需要以此为前缀.到目前为止,这在MVC3中运行得很好. 我使用here的指导手动将项目升
我有一个MVC3项目,其中包含以下代码,它们运行得很好:

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

我们的团队有一个编码指南,所有本地方法调用都需要以此为前缀.到目前为止,这在MVC3中运行得很好.

我使用here的指导手动将项目升级到MVC4.现在上面的代码错误输出以下消息:

Unexpected "this" keyword after "@" character.  Once inside code,you do not need to prefix constructs like "this" with "@".

我认为错误信息具有误导性.这意味着这样做是合法的,但不是必要的.我故意这样做,即使我知道不需要遵守编码指南.解析器失败的事实,消息应该指示一旦内部代码,你不能加前缀….我明白你不能在嵌套代码块中使用@,而问题不在于@符号,而是使用这个.将此添加到语句不会影响调用的结果,所以我不明白为什么它会抛出异常.我可以通过删除此问题来解决此问题:

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

但这样做会与我们的编码指南相冲突.所以我的问题是,这是在MVC4中故意改变的东西(因为它在MVC3中工作得很好).或者这是MVC4中的错误?如果我删除if块,我仍然可以使用this关键字.

@this.Html.ActionLink("Add","Add")

解决方法

这实际上是MVC4中的 bug.提交了 report.

两个解决方案是:

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

要么

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读