在 ASP.NET Razor 页面中使用 VB.NET 语法(即 .vbhtml 文件)时,逻辑条件的写法与 C# 有所不同。下面是常用的 VB.NET 在 Razor 中的逻辑条件写法汇总,包含完整语法示例:
1. 基本 If 条件
@If userIsLoggedIn Then
<p>欢迎回来,@userName!</p>
ElseIf userRole = "Admin" Then
<p>您是管理员</p>
Else
<p>请登录</p>
End If
2. 多条件判断(And、Or、Not)
@If userAge >= 18 AndAlso userCountry = "China" Then
<p>您已成年,可以访问该内容</p>
ElseIf userAge < 18 OrElse isBlocked Then
<p>访问被拒绝</p>
End If
注意:VB.NET 推荐使用
AndAlso(短路与)和OrElse(短路或),而不是And、Or
3. Select Case(相当于 C# 的 switch)
@Select Case status
Case 1
<span class="badge badge-success">已完成</span>
Case 2
<span class="badge badge-warning">进行中</span>
Case 3
<span class="badge badge-danger">已取消</span>
Case Else
<span class="badge badge-secondary">未知</span>
End Select
4. 三元运算符(VB 中的 IIf 或 If 运算符)
VB.NET 有两种写法:
@* 传统 IIf(会计算所有参数,不推荐用于有副作用的情况)*@
<p>状态:@IIf(isActive, "在线", "离线")</p>
@* .NET 4.0+ 推荐使用 If 运算符(短路求值)*@
<p>状态:@(If(isActive, "在线", "离线"))</p>
5. 空值判断(Is Nothing、IsNot Nothing)
@If user IsNot Nothing AndAlso user.IsApproved Then
<p>@user.Name 已通过审核</p>
Else
<p>用户不存在或未审核</p>
End If
6. 字符串空判断(String.IsNullOrEmpty / String.IsNullOrWhiteSpace)
@If Not String.IsNullOrWhiteSpace(searchKeyword) Then
<p>搜索关键词:@searchKeyword</p>
Else
<p>请输入搜索内容</p>
End If
7. 在循环中使用条件(For Each + If)
@For Each item In Model.ProductList
If item.IsDiscount Then
@<div class="product discount">
<s>@item.OriginalPrice</s> <strong>@item.Price</strong>(促销)
</div>
Else
@<div class="product">
<strong>@item.Price</strong>
</div>
End If
Next
8. 使用 CodeBlock 写复杂逻辑(推荐用于多行逻辑)
@Code
Dim message As String = ""
If DateTime.Now.Hour < 12 Then
message = "上午好"
ElseIf DateTime.Now.Hour < 18 Then
message = "下午好"
Else
message = "晚上好"
End If
End Code
<p>@message,欢迎访问!</p>
9. 一行条件渲染(@ 或直接输出)
@If showAds Then
@<div class="ads">这里是广告位</div>
End If
@* 或者更简洁的写法 *@
@If Not isMobile Then : @<script src="~/js/desktop.js"></script> : End If
总结:VB Razor 常用条件关键字
| 用途 | VB.NET 语法 |
|---|---|
| 如果 | @If ... Then ... End If |
| 否则如果 | ElseIf ... Then |
| 否则 | Else |
| 条件结束 | End If |
| 短路与 | AndAlso |
| 短路或 | OrElse |
| 切换判断 | @Select Case ... End Select |
| 三元运算符(推荐) | If(condition, true部分, false部分) |
| 判断 Nothing | Is Nothing / IsNot Nothing |
只要记住以上语法,在 .vbhtml 文件中写逻辑条件就和写普通 VB.NET 一样自然了。
有具体场景需要写条件判断吗?可以贴代码,我帮你用 VB Razor 正确改写。