ASP.NET MVC视图添加if判断区分聊天消息显示样式报错如何解决
错误原因
- 数据库
direction字段为BIT类型,Entity Framework会自动映射为C#的bool/bool?(可空布尔)类型,不能直接和整数0做相等判断 - 代码已经处在
@foreach的Razor代码块范围内,if前不需要额外加@符号 direction字段在表结构中允许为NULL,直接判断可能触发空引用相关报错- 原代码
else分支没有加花括号包裹代码块,Razor语法解析会出错
修正方案
SQL Server的BIT类型取值0对应C#布尔值false,取值1对应true,按如下规则修改代码即可:
@foreach (var item in Model) { // 若direction为不可空bool类型用这个判断 if (item.direction == false) { <div class="messages__item message-student"> @Html.DisplayFor(modelItem => item.text) </div> } else { <div class="messages__item message-services"> @Html.DisplayFor(modelItem => item.text) </div> } }
如果EF生成的模型中direction是可空bool?类型,兼容空值的写法如下(示例中空值默认按员工端展示,可按需调整):
@foreach (var item in Model) { if (item.direction.GetValueOrDefault() == false) { <div class="messages__item message-student"> @Html.DisplayFor(modelItem => item.text) </div> } else { <div class="messages__item message-services"> @Html.DisplayFor(modelItem => item.text) </div> } }
内容的提问来源于stack exchange,提问作者Lighto Gamer
相关产品推荐
相关产品推荐

