ASP.NET Web Pages – C# 和 VB 实例

ASP.NET Web Pages 中 C# 与 VB.NET 完全对照实例

(2025 年最新写法,一眼看懂两种语言区别)

ASP.NET Web Pages 同时支持 C#(.cshtml)VB.NET(.vbhtml),功能 100% 相同,只是语法不同。下面用最常用的 20 个实战场景,给你 C# 和 VB.NET 完全平行对照,复制粘贴就能用!

功能场景C# 版(.cshtml)VB.NET 版(.vbhtml)
1. 基本页面结构“`csharp
Layout = “~/Shared/_Layout.cshtml”;
Page.Title = “首页”;
}

欢迎使用 C# Razor

|vbhtml
@{
Layout = “~/Shared/_Layout.cshtml”
Page.Title = “首页”
}

欢迎使用 VB.NET Razor

| 2. 变量声明与赋值            | ```csharp
@{
    var name = "张三";
    var age = 28;
    var isVip = true;
    var now = DateTime.Now;
}

| “`vbhtml
@{
Dim name = “张三”
Dim age = 28
Dim isVip = True
Dim now = DateTime.Now
}

| 3. if 判断                   | ```csharp
@if(userId > 0){
    <p>欢迎回来,@name!</p>
}else{
    <p><a href="/Login">请登录</a></p>
}

| “`vbhtml
@If userId > 0 Then

欢迎回来,@name!
Else

请登录
End If

| 4. for 循环                  | ```csharp
@for(int i=1; i<=5; i++){
    <span>★</span>
}

| “`vbhtml
@For i = 1 To 5

Next

| 5. foreach 循环              | ```csharp
@foreach(var p in products){
    <div>@p.Name - ¥@p.Price</div>
}

| “`vbhtml
@For Each p In products

@p.Name – ¥@p.Price
Next

| 6. 判断是否 POST 提交        | ```csharp
@if(IsPost){
    <p>表单已提交!</p>
}

| “`vbhtml
@If IsPost Then

表单已提交!
End If

| 7. 读取表单数据              | ```csharp
var email = Request["email"];
var pwd   = Request["password"];

| “`vbhtml
Dim email = Request(“email”)
Dim pwd = Request(“password”)

| 8. 数据库查询(最常用)      | ```csharp
var db = Database.Open("MySite");
var users = db.Query("SELECT * FROM Users WHERE IsActive=@0", true);

| “`vbhtml
Dim db = Database.Open(“MySite”)
Dim users = db.Query(“SELECT * FROM Users WHERE IsActive=@0”, True)

| 9. 防伪令牌                  | ```csharp
@AntiForgery.GetHtml()

| “`vbhtml
@AntiForgery.GetHtml()

| 10. 布局页指定               | ```csharp
@{
    Layout = "~/Shared/_AdminLayout.cshtml";
}

| “`vbhtml
@{
Layout = “~/Shared/_AdminLayout.cshtml”
}

| 11. Section 定义与渲染       | C#: ```csharp
@section header {
    <h2>管理员专区</h2>
}

渲染:@RenderSection("header", required: false) | VB: “`vbhtml
@section header

管理员专区

end section

渲染:`@RenderSection("header", required:=False)` |
| 12. 函数(@functions)       | ```csharp
@functions {
    public string Hello(string name){
        return "你好," + name;
    }
}
<p>@Hello("李四")</p>

| “`vbhtml
@functions {
Public Function Hello(name As String) As String
Return “你好,” & name
End Function
}

@Hello(“李四”)

| 13. 帮助器(@helper)        | ```csharp
@helper ShowPrice(decimal price){
    <span style="color:red">¥@price.ToString("N2")</span>
}
@ShowPrice(999.99)

| “`vbhtml
@helper ShowPrice(price As Decimal)
¥@price.ToString(“N2”)
end helper
@ShowPrice(999.99)

| 14. WebGrid(表格)          | ```csharp
var grid = new WebGrid(data, rowsPerPage:10);
@grid.GetHtml(columns: grid.Columns(
    grid.Column("Name"),
    grid.Column("Price", format: @<strong>¥@item.Price</strong>)
))

| “`vbhtml
Dim grid = new WebGrid(data, rowsPerPage:=10)
@grid.GetHtml(columns:=grid.Columns( _
grid.Column(“Name”), _
grid.Column(“Price”, format:=@¥@item.Price) _
))

| 15. Chart 图表               | ```csharp
new Chart(600,400).AddSeries(
    chartType: "Pie",
    xValue: new[] {"苹果","香蕉","橙子"},
    yValues: new[] {30,40,30})
.Write();

| “`vbhtml
new Chart(600,400).AddSeries( _
chartType:=”Pie”, _
xValue:=New () {“苹果”,”香蕉”,”橙子”}, _
yValues:=New () {30,40,30}) _
.Write()

| 16. 文件上传                 | ```csharp
var file = Request.Files["avatar"];
if(file!=null && file.ContentLength>0){
    file.SaveAs(Server.MapPath("~/uploads/"+file.FileName));
}

| “`vbhtml
Dim file = Request.Files(“avatar”)
If file IsNot Nothing AndAlso file.ContentLength>0 Then
file.SaveAs(Server.MapPath(“~/uploads/” & file.FileName))
End If

| 17. 发送邮件                 | ```csharp
WebMail.Send(to:"a@qq.com", subject:"测试", body:"Hello")

| “`vbhtml
WebMail.Send(to:=”a@qq.com”, subject:=”测试”, body:=”Hello”)

| 18. 注释                     | ```csharp
@* 这是一行注释 *@

| “`vbhtml
@* 这是一行注释 *@

| 19. 多行代码块               | ```csharp
@{
    var a = 1;
    var b = 2;
    var c = a + b;
}

| “`vbhtml
@{
Dim a = 1
Dim b = 2
Dim c = a + b
}

| 20. 完整登录页面示例         | **C# 版完整登录页面**<br>```csharp
@{
    var msg = "";
    if(IsPost){
        if(WebSecurity.Login(Request["user"], Request["pwd"])){
            Response.Redirect("~/Admin/");
        }else{
            msg = "用户名或密码错误";
        }
    }
}
<h2>管理员登录</h2>
<form method="post">
    @AntiForgery.GetHtml()
    用户名:<input name="user" /><br>
    密码:<input type="password" name="pwd" /><br>
    <button>登录</button>
    <span style="color:red">@msg</span>
</form>

| VB.NET 版完全相同功能
“`vbhtml
@{
Dim msg = “”
If IsPost Then
If WebSecurity.Login(Request(“user”), Request(“pwd”)) Then
Response.Redirect(“~/Admin/”)
Else
msg = “用户名或密码错误”
End If
End If
}

管理员登录

@AntiForgery.GetHtml() 用户名:
密码:
登录 @msg

“` |

终极结论(2025 年建议)

项目C# (.cshtml)VB.NET (.vbhtml)
主流程度99% 的开发者在使用极少人用
学习成本低(和 JavaScript 很像)中等
招聘难度极易几乎招不到人
社区支持极强基本没有
推荐程度★★★★★ 强烈推荐★☆☆☆☆ 不推荐

2025 年结论:
全部项目都用 C#(.cshtml),VB.NET 仅用于维护极老系统。

需要我给你一个「C# + VB 双语完整后台管理系统」(登录 + 用户管理 + 商品管理 + WebGrid + Chart 全都有)吗?
两个版本完全平行对照,一边学一边看,3 分钟掌握两种语法!
打包好了,随时说「发我」就发你(带数据库 + 一键部署脚本)!

文章已创建 2863

发表回复

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

相关文章

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

返回顶部