ASP.NET Razor VB.NET(.vbhtml)变量终极速查表
(2025 年最新·最全·最实战,虽然没人用了,但你要是真要维护老项目,这张表救你一命!)
| 分类 | VB.NET 变量写法(.vbhtml) | 说明 + 2025 年吐槽与建议 |
|---|---|---|
| 基本变量声明 | Dim name = "张三" | 自动推断类型,和 C# var 一样好用 |
Dim age As Integer = 28 | 显式声明整数 | |
Dim price As Decimal = 999.99D | 金额必须用 Decimal,结尾加 D | |
Dim isVip As Boolean = True | 布尔值用 True / False | |
Dim now As DateTime = DateTime.Now | 时间类型 | |
| 可空类型(重要!) | Dim birthday As DateTime? = Nothing | 数据库允许 NULL 必须加 ? |
Dim score As Integer? = Nothing | 同上 | |
| 字符串判空(神技) | If String.IsNullOrEmpty(name) Then | 永远用这个!比 name = "" 或 name Is Nothing 更安全` |
If Not String.IsNullOrWhiteSpace(phone) Then | 判断是否填了内容(忽略空格) | |
| 空值合并(VB 特色) | Dim displayName = If(user?.Name, "游客") | VB 专属 If 运算符,超好用! |
Dim avatar = If(String.IsNullOrEmpty(user?.Avatar), "/images/default.jpg", user.Avatar) | 一行搞定默认值 | |
| 字符串连接 | "欢迎 " & name & " 光临!" | 用 & 连接,不要用 +(+ 在 VB 里可能是加法) |
String.Format("价格:¥{0:N2}", price) | 传统格式化 | |
| Request 取值 | Dim id = Request("id").AsInt() | 推荐!自动转 Int,默认 0 |
Dim isOn = Request("vip").AsBool() | 转布尔 | |
Dim dt = Request("date").AsDateTime() | 转时间 | |
| 集合变量 | Dim list = db.Query("SELECT * FROM Products") | 返回 IEnumerable(Of Object) |
Dim product = db.QuerySingle("SELECT * FROM Products WHERE Id=@0", id) | 单条记录 | |
Dim count As Integer = db.QueryValue("SELECT COUNT(*) FROM Orders") | 单个值 | |
| Session / Cache | Session("UserId") = 123 | 会话 |
Cache("HotList") = list | 全站缓存 | |
| 常量 | Const PageSize As Integer = 20 | 常量用 Const |
| 数组 | Dim colors() As String = {"红", "橙", "黄", "绿", "蓝"} | |
Dim numbers As Integer() = Enumerable.Range(1, 10).ToArray() | 生成 1~10 数组 | |
| 字典 Dictionary | Dim map As New Dictionary(Of String, String) From {{"vip","金牌会员"}, {"admin","管理员"}} | 推荐写法 |
2025 年最常用的 15 个 VB Razor 变量实战代码(直接复制到 .vbhtml)
@{
Dim db = Database.Open("MySite")
Dim userId = WebSecurity.CurrentUserId
Dim isLogin = WebSecurity.IsAuthenticated
' 1. 最安全的用户显示名(2025 必写!)
Dim userName = If(PageData("User")?.UserName, "游客")
' 2. 分页变量标准写法
Dim page As Integer = Request("page").AsInt(1)
Dim pageSize As Integer = 20
Dim offset As Integer = (page - 1) * pageSize
' 3. 搜索 + 防注入
Dim keyword = If(Request("kw"), "")
Dim sql = "SELECT * FROM Products WHERE Name LIKE @0"
Dim products = db.Query(sql, "%" & keyword & "%")
' 4. 价格永远用 Decimal + D
Dim price As Decimal = 888.88D
Dim discount As Decimal = 0.85D
Dim finalPrice = price * discount
' 5. 时间处理
Dim now As DateTime = DateTime.Now
Dim tomorrow As DateTime = DateTime.Today.AddDays(1)
' 6. 权限判断变量
Dim isAdmin As Boolean = Roles.IsUserInRole(WebSecurity.CurrentUserName, "Admin")
Dim canEdit As Boolean = (user?.Id = article.AuthorId) OrElse isAdmin
}
VB.NET Razor 特有神技(C# 没有的!)
' 神技1:If 运算符(比三元更爽!)
Dim statusText = If(order.Status = 1, "已支付", "未支付")
' 神技2:OrElse / AndAlso(短路求值)
If isLogin AndAlso user.IsVip Then
' 只有 isLogin 为 True 才会检查 user.IsVip
End If
' 神技3:DirectCast / TryCast(类型转换)
Dim user = TryCast(PageData("User"), Object)
2025 年残酷真相(必须告诉你)
| 项目 | VB.NET Razor (.vbhtml) | C# Razor (.cshtml) |
|---|---|---|
| 主流程度 | 0.1% 以下 | 99.9% |
| 社区支持 | 基本绝迹 | 满天飞 |
| 招聘市场 | 几乎没人招 | 到处都是 |
| 语法简洁度 | 输 | 完胜 |
| 2025 年建议 | 除非维护 10 年以上老项目,坚决不用 | 全部项目强制使用 |
总结:如果你现在还在写 VB.NET Razor……
请立刻改用 C#!
但万一你接手了一个 2012 年的老项目,这张表就是你的救命稻草!
需要我把这张「VB.NET Razor 变量救命表」做成 PDF + 深色壁纸发给你吗?
(专门给接手老项目的苦逼程序员准备的)
直接说「发我 VB 救命表」我就发你!(带 30 个真实老项目常用写法)