Visual Studio将.cshtml内JavaScript识别为C#报CS0103错误如何解决
问题根因
该问题是Razor文件语法解析规则和JS注释的@标记冲突导致的:Razor引擎默认会将.cshtml/.razor文件中的@符号识别为C#代码插值标记,你这段JS注释里的@param、@returns中的@被VS 2022预览版的Razor解析器误判为C#代码入口,因此会把JS代码错当成C#代码解析,抛出CS0103错误。
解决办法
- 转义注释内的
@符号:将所有JS注释里的@param、@returns修改为@@param、@@returns。Razor语法中两个连续的@会被解析为单个@输出,既不会触发C#代码识别,也不会影响JS注释的正常功能。 - 抽离独立JS文件:把这段JS代码从Razor文件的
<script>标签中迁移到单独的.js文件,再在Razor文件中引用该外部JS文件,完全避开Razor的解析逻辑。 - 用Razor文本标记包裹JS内容:在
<script>标签内部新增一层<text>标签包裹全部JS代码,明确告知Razor引擎这部分内容为纯文本,无需执行C#语法解析。 - 升级Visual Studio版本:你当前使用的是VS 2022预览版,这类版本本身存在大量未修复的IDE bug,升级到最新的VS 2022正式版即可直接解决这个识别异常问题。
内容的提问来源于stack exchange,提问作者Munchkin
相关产品推荐
相关产品推荐

