为何Razor的@if语句满足条件却不添加script标签?
Razor视图if条件进入却未生成script标签的排查方向
- Model.AddThisKey含不可见空白字符:调试器显示有值,但可能存在全角空格、制表符、换行符这类
string.IsNullOrWhiteSpace会判定为空白的字符。可以在调试时查看Model.AddThisKey.Length,如果长度大于可见字符数,就说明存在这类不可见字符。 - Razor语法解析异常:尝试将src的值先赋值给局部变量再使用,避免语法解析冲突:
@{ var scriptUrl = Model.AddThisKey; } @if (!string.IsNullOrWhiteSpace(scriptUrl)) { <script type="text/javascript" src="@scriptUrl"></script> } - 视图输出被过滤拦截:项目中的自定义视图过滤器、Action过滤器,或是HTML编码处理可能会过滤script标签。可以先在if块内输出普通文本标签(如
<p>@Model.AddThisKey</p>),查看页面源码确认是否能正常渲染,以此判断是否是script标签被拦截。 - 调试器步进显示误差:有时调试器的步进会出现视觉误导,实际代码并未进入if块。可以在if块内添加
@Html.Raw("<!-- Debug: 已进入if块 -->"),通过查看页面源码确认是否真的执行了if块内的代码。
内容的提问来源于stack exchange,提问作者JimmyP
相关产品推荐
相关产品推荐

