ASP.NET Razor – C# 和 VB 代码语法

ASP.NET Razor 页面中 C# 与 VB.NET 代码语法 100% 对照表

(2025 最新版,一眼看懂,复制即用)

功能场景C# 语法(.cshtml)VB.NET 语法(.vbhtml)
文件后缀.cshtml.vbhtml
代码块开头@{@{ (一样!)
变量声明(自动推断)var name = "张三";Dim name = "张三"
变量声明(显式类型)string name = "张三";Dim name As String = "张三"
整数int age = 28;Dim age As Integer = 28
布尔值bool isVip = true;Dim isVip As Boolean = True
日期时间DateTime now = DateTime.Now;Dim now As DateTime = DateTime.Now
if 判断@if(age > 18){ <p>成人</p> } else { <p>未成年</p> }@If age > 18 Then <p>成人</p> Else <p>未成年</p> End If
if-else if-else@if(x==1){...}else if(x==2){...}else{...}@If x=1 Then ... ElseIf x=2 Then ... Else ... End If
for 循环(计数)@for(int i=1; i<=5; i++){ <text>★</text> }@For i = 1 To 5 <text>★</text> Next
foreach 循环@foreach(var p in products){ <div>@p.Name</div> }@For Each p In products <div>@p.Name</div> Next
while 循环@while(reader.Read()){ <text>@reader["Name"]<br></text> }@While reader.Read() <text>@reader("Name")<br></text> End While
switch / Select Case@switch(status){ case 1: <span>待支付</span> break; case 2: ... default: ... }@Select Case status Case 1 <span>待支付</span> Case 2 ... Case Else ... End Select
三元运算符var txt = isVip ? "VIP用户" : "普通用户";Dim txt = If(isVip, "VIP用户", "普通用户")
空值合并var name = user?.Name ?? "游客";Dim name = If(user?.Name, "游客")
字符串连接"欢迎 " + name + " 光临""欢迎 " & name & " 光临"
字符串插值(推荐)$"欢迎 {name},您是第 {count} 位访客"String.Format("欢迎 {0},您是第 {1} 位访客", name, count)(VB 无插值语法)
注释@* 这是一段 Razor 注释 *@@* 这是一段 Razor 注释 *@ (一样!)
函数定义(@functions)@functions { public string Hi(string n) { return "你好 "+n; } }@functions { Public Function Hi(n As String) As String Return "你好 " & n End Function }
帮助器(@helper)@helper Price(decimal m){ <span style="color:red">¥@m</span> }@helper Price(m As Decimal) <span style="color:red">¥@m</span> End Helper
Lambda 表达式list.Where(p => p.Price > 100)list.Where(Function(p) p.Price > 100)
LINQ 查询var vip = users.Where(u=>u.IsVip).OrderBy(u=>u.JoinDate)Dim vip = users.Where(Function(u) u.IsVip).OrderBy(Function(u) u.JoinDate)
Try-Catch@try { ... } catch(Exception ex) { <p>错误:@ex.Message</p> }@Try ... Catch ex As Exception <p>错误:@ex.Message</p> End Try
using 语句using(var db = Database.Open("Shop")){ ... }VB Razor 不支持 using(需要完整写)
IsPost / IsAjaxif(IsPost){ ... }If IsPost Then ... End If(大小写都可以)
Request / ResponseRequest["name"]Request("name") (括号一样)
立即执行代码@(new Chart(...).Write())@(New Chart(...).Write())

2025 年终极结论(一句话说死)

项目C# (.cshtml)VB.NET (.vbhtml)
主流程度99.9% 的项目在用几乎绝迹
社区、教程、招聘满天飞基本找不到
语法简洁度完胜(var、=>、??、$”…”)输(Dim、&、Function、End If)
学习成本极低(和 JavaScript 很像)中等
官方推荐强烈推荐已废弃
2025 年建议全部项目强制使用 C#仅用于维护 10 年以上老项目

真实案例对比(同一功能)

<!-- C# 版(推荐!)-->
@{
    var list = Database.Open("Shop").Query("SELECT * FROM News ORDER BY Id DESC LIMIT 10");
    var count = Request["page"].AsInt(1) * 10;
}
<h2>最新资讯</h2>
<ul>
@foreach(var n in list){
    <li>@n.Title (@n.AddTime.ToString("yyyy-MM-dd"))</li>
}
</ul>
<!-- VB 版(基本没人用)-->
@{
    Dim list = Database.Open("Shop").Query("SELECT * FROM News ORDER BY Id DESC LIMIT 10")
    Dim count = Request("page").AsInt(1) * 10
}
<h2>最新资讯</h2>
<ul>
@For Each n In list
    <li>@n.Title (@n.AddTime.ToString("yyyy-MM-dd"))</li>
Next
</ul>

一眼看出:C# 更短、更现代、更舒服!

最终建议(2025 年)

你是谁?必须怎么选?
新项目 / 个人学习100% 用 C# (.cshtml)
公司项目 / 团队开发强制所有人用 C#
维护 10+ 年老系统才允许继续用 VB
想未来好找工作学 C#,VB 早点忘掉

需要我立刻发你「C# Razor 语法速成包」(PDF + 深色壁纸 + VS Code 高亮配置)吗?
3 天背完,终身受用!
直接说「发我 C# Razor 速成包」就行!

文章已创建 2863

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部