.NET Core 2.1 Razor视图新增HTML代码后渲染报错排查求助
问题排查与解决方案
常见触发原因与对应修复方法
- 指令位置错误
Razor视图的@using、@inject、@model、布局声明等Razor专属指令,必须放在页面所有HTML内容的最顶部。如果新增HTML时不小心把这些指令插到了HTML标签中间,就会引发解析错误。你可以先调整指令顺序,把所有Razor指令移到页面第一行开始的位置,不要有任何HTML内容在它们前面。 - 未转义的@字符
如果你新增的HTML内容里包含纯文本的@字符(比如邮箱地址、社交平台@提及等),Razor会默认把@后面的内容识别为动态代码尝试解析,如果刚好匹配到你注入的Configuration变量名片段,就会触发语法错误。修复方法是把纯文本里的单个@转义为@@。 - 代码语法错误
可以临时注释掉你新增的所有HTML代码,逐段放开注释测试,定位到具体触发错误的代码段,再检查该段里是否有未闭合的标签、错误的Razor语法片段。 - 框架适配问题
如果你使用的是.NET Framework版本的ASP.NET MVC,本身不支持@inject IConfiguration注入,需要改用@System.Configuration.ConfigurationManager.AppSettings["配置键名"]的方式读取配置;如果是ASP.NET Core版本,IConfiguration默认已经在容器中注册,不需要额外添加服务注册逻辑。 - 命名冲突问题
布局和页面同时注入同名的Configuration变量可能引发作用域冲突,可以尝试把页面内的注入变量改名,比如修改为@inject IConfiguration PageConfig,后续读取配置时使用PageConfig["配置键名"]即可。
内容的提问来源于stack exchange,提问作者TechSha
相关产品推荐
相关产品推荐

