Razor页面if语句失效求助:ViewData判断无输出
解决Razor页面ViewData判断无输出的问题
问题核心在于ViewData的索引器返回值是object类型,直接在@if条件中使用会导致编译不通过——即便你确定它的值是true,代码块也不会执行,自然没有文本输出。
修复方案
方案1:显式转换为bool类型
适合你确定ViewData["IsActive"]一定是bool类型且不为null的场景,直接强制转换:
<div class="page-login-block-info big centered"> @if ((bool)ViewData["IsActive"]) { <h2>text 1</h2> } else { <h2>text 2</h2> } </div>
方案2:安全转换处理null情况
如果不确定ViewData["IsActive"]是否为null,用Convert.ToBoolean做安全转换,避免空引用异常:
<div class="page-login-block-info big centered"> @if (ViewData["IsActive"] != null && Convert.ToBoolean(ViewData["IsActive"])) { <h2>text 1</h2> } else { <h2>text 2</h2> } </div>
方案3:改用ViewBag(更简洁)
ViewBag是dynamic类型,无需显式转换,写法更直观:
<div class="page-login-block-info big centered"> @if (ViewBag.IsActive) { <h2>text 1</h2> } else { <h2>text 2</h2> } </div>
注意:使用ViewBag时要确保后端已将ViewBag.IsActive赋值为bool类型
内容的提问来源于stack exchange,提问作者Greg
相关产品推荐
相关产品推荐

