HTML 编码块 - 无效的表达式术语 ':'

Posted

技术标签:

【中文标题】HTML 编码块 - 无效的表达式术语 \':\'【英文标题】:HTML Encoding Blocks - Invalid expression term ':'HTML 编码块 - 无效的表达式术语 ':' 【发布时间】:2010-05-07 16:21:06 【问题描述】:

我正在开发一个新的 ASP.NET MVC 2.0 应用程序并希望使用新的 ASP.NET 4 编码块。

我的视图代码包含 <%: Model.ActivityName %> 但是 Visual Studio 报告:

意外的令牌

:(冒号)的位置。当我运行应用程序时,出现以下编译错误:

编译器错误消息:CS1525:无效的表达式术语“:”

我错过了什么?

为任何帮助/建议干杯。

【问题讨论】:

你在哪个版本的VS中做这个? VS 2008。我已将我的应用程序创建为 MVC 2.0 应用程序。这不是自动使用 ASP.NET 4 吗? ASP.Net 4.0 仅支持 VS2010。 是的,我相信你需要 VS2010 【参考方案1】:

此功能是 ASP.Net 4.0 的新功能,而后者又是 Visual Studio 2010 的新功能。

在早期版本中,你应该写

<%= html.Encode(Model.ActivityName) %>

【讨论】:

谢谢沙布斯。我完全忽略了我可能需要在 VS 2010 中开发这个的想法。非常感谢。 你不需要使用VS2010来使用ASP.Net MVC。 是的,我知道。我只想能够使用代码块功能。这是一个全新的项目,所以我想尽可能使用最新的东西。我的 MVC 1 项目都是在 2008 年开发的【参考方案2】:

听起来目标框架未设置为 .NET Framework 4.0。

为此,在解决方案资源管理器中,右键单击项目根目录并在上下文菜单中选择属性。

在应用程序选项卡中,您应该会看到 Target Framework 的下拉菜单。将此更改为 .NET Framework 4.0。

尝试编译以查看错误是否消失。

【讨论】:

宾果游戏!那是为我做的。我一直在 3.5 中从事另一个项目,但当我开始新的解决方案时,它就卡住了。感谢 DevDave!【参考方案3】:

正如已经指出的,您需要使用正确版本的 VS。如果不能,并且需要更改所有代码以使用Html.Encode 方法Phil Haack had a post about doing the opposite,这可能很有用。

不是我绑定的,但是VS中的反向搜索和替换应该是这样的

\<\%:b*[^%]*:b*\%\>

替换为

<%:= Html.Encode\( \1 \) %>

或类似的东西。就像我说的,我目前没有要测试的 IDE,所以在你在整个项目中运行它之前先尝试一下。

【讨论】:

干杯山姆,感谢博客链接。事实上,我昨天才读到这个。 :)

以上是关于HTML 编码块 - 无效的表达式术语 ':'的主要内容,如果未能解决你的问题,请参考以下文章

无效的表达式术语“>”

框架 2.0 中的表达式术语“>”无效

无效使用无效表达式,怎么办? [关闭]

Unicode 正则表达式;无效的 XML 字符

流程控制语句

在文本块中获取相同的正则表达式组