VS2022 v17.7中.NET4.8项目CSHTML不识别@@转义语法问题
.NET 4.8项目CSHTML中@@转义@符号无效的解决办法
@@转义@符号并非.NET Core专属特性,ASP.NET Framework(包括.NET 4.8)的Razor视图同样支持该语法。针对你遇到的问题,可以从以下几个方向排查:
检查项目Razor配置
打开项目根目录的Web.config,确认<system.web.webPages.razor>节点配置正确,确保引用了对应版本的Razor和MVC程序集。例如MVC 5.2.7版本的配置示例:<system.web.webPages.razor> <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <pages pageBaseType="System.Web.Mvc.WebViewPage"> <namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <!-- 其他命名空间引用 --> </namespaces> </pages> </system.web.webPages.razor>同时确认
<compilation>节点下包含Razor相关程序集的引用:<compilation debug="true" targetFramework="4.8"> <assemblies> <add assembly="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <!-- 其他必要程序集 --> </assemblies> </compilation>修复Visual Studio智能感知问题
很多时候是编辑器的IntelliSense误报,而非语法本身不支持:- 删除项目的
bin、obj文件夹,清理后重新生成项目 - 关闭Visual Studio,删除项目根目录下的隐藏
.vs文件夹,重启VS后重新加载项目 - 通过「编辑 → IntelliSense → 刷新本地缓存」重置智能感知
- 删除项目的
确认Razor语法上下文
在Razor视图中,不同场景下输出@符号的方式略有区别:- 在HTML文本区域,直接使用
@@即可转义为单个@符号 - 在C#代码块(
@{ ... })中,若要输出@符号,可使用@Html.Raw("@")或字符串转义@"@"
- 在HTML文本区域,直接使用
内容的提问来源于stack exchange,提问作者Steve McNiven-Scott
相关产品推荐
相关产品推荐

