ASP.NET Web Pages – 添加 Razor 代码

ASP.NET Web Pages(经典版)—— Razor 代码完整写法大全

(适用于老项目维护,2010–2016 年的 .cshtml 文件)

所有代码都可直接复制粘贴到你的 .cshtml 文件里(不需要控制器、不需要 PageModel)

1. 基本语法(必背 7 种)

用法写法示例说明
输出变量@DateTime.Now自动 HTML 编码
输出不编码(显示 HTML)@Html.Raw("<strong>加粗</strong>")危险!只用于可信内容
代码块@{ var name = "张三"; }大括号内是纯 C#
条件判断@if(userId > 0){ <p>已登录</p> }直接混在 HTML 里
循环@foreach(var p in products){ ... }
注释(C#)@* 这是一段 Razor 注释 *@不会发送到浏览器
切换回 HTML@: 这行是纯文本<text>纯文本</text>极少用

2. 常用内置对象(老项目里 90% 都靠这几个)

Request["id"]          → GET 或 POST 参数
Request.QueryString["id"]
Request.Form["name"]

Response.Write("hello") → 直接输出
Response.Redirect("~/Login.cshtml")

IsPost                 → 是否是 POST 请求
IsAjax                 → 是否是 Ajax 请求(jQuery $.ajax 发出的)

Session["UserId"] = 5; → 存
var id = Session["UserId"] as int?;

UrlData[0]             → URL 中的 /Products/123 的 123

3. 数据库操作(经典 Web Pages 写法)

@{
    var db = Database.Open("MyDatabase");        // App_Data 里的 SQLite 或 SQL Server Compact
    var sql = "SELECT * FROM Products WHERE Category=@0";
    var list = db.Query(sql, "手机");
}

<table border="1">
    @foreach(var row in list){
        <tr>
            <td>@row.Id</td>
            <td>@row.Name</td>
            <td>@row.Price</td>
            <td>
                <a href="Edit.cshtml?id=@row.Id">编辑</a> |
                <a href="Delete.cshtml?id=@row.Id" onclick="return confirm('确定删除?');">删除</a>
            </td>
        </tr>
    }
</table>

4. 表单提交 & 防注入(最常见完整示例)

@{
    var message = "";
    if(IsPost){
        var name  = Request["name"];
        var price = Request["price"].AsDecimal();

        if(name.IsEmpty()){
            message = "名称不能为空!";
        }else{
            var db = Database.Open("Shop");
            db.Execute("INSERT INTO Products (Name,Price) VALUES (@0,@1)", name, price);
            Response.Redirect("~/Products/List.cshtml");
        }
    }
}

<h2>新增商品</h2>
<p style="color:red">@message</p>

<form method="post">
    商品名称:<input type="text" name="name" value="@Request["name"]" /><br /><br />
    价  格:<input type="text" name="price" value="@Request["price"]" /><br /><br />
    <input type="submit" value="保存" />
</form>

5. 文件上传(超级常用)

@{
    if(IsPost && Request.Files.Count > 0){
        var file = Request.Files[0];
        if(file.FileName.EndsWith(".jpg") || file.FileName.EndsWith(".png")){
            var savePath = "~/uploads/" + Path.GetFileName(file.FileName);
            file.SaveAs(Server.MapPath(savePath));
            @:<p>上传成功:<img src="@savePath" width="200" /></p>
        }
    }
}

<form method="post" enctype="multipart/form-data">
    选择图片:<input type="file" name="file1" /><br /><br />
    <input type="submit" value="上传" />
</form>

6. 布局页(_Layout.cshtml)+ 公共页头页尾

<!-- _Layout.cshtml -->
<!DOCTYPE html>
<html>
<head>
    <title>@Page.Title</title>
    <link href="~/styles/site.css" rel="stylesheet" />
</head>
<body>
    <header>我的网站 - @DateTime.Now.Year</header>

    <nav>
        <a href="~/Default.cshtml">首页</a> |
        <a href="~/Products/List.cshtml">商品</a>
    </nav>

    <div id="main">
        @RenderBody()
    </div>

    <footer>&copy; 2025 老项目还在跑</footer>
</body>
</html>

在普通页面使用:

@{
    Layout = "~/_Layout.cshtml";
    Page.Title = "商品列表";
}
<h1>这里是内容区</h1>

7. 简单登录(WebSecurity,最经典的会员系统)

先安装包(NuGet):

Install-Package Microsoft.AspNet.WebPages.WebData
Install-Package Microsoft.AspNet.WebPages.Administration

初始化(只运行一次,放在 _AppStart.cshtml):

@{
    WebSecurity.InitializeDatabaseConnection("MyDatabase", "Users", "Id", "UserName", true);
}

登录页面示例(Login.cshtml):

@{
    if(IsPost){
        if(WebSecurity.Login(Request["user"], Request["pwd"], true)){
            Response.Redirect("~/Admin/");
        }else{
            @:<p style="color:red">用户名或密码错误</p>
        }
    }
}
<form method="post">
    用户名:<input name="user" /><br />
    密码:<input type="password" name="pwd" /><br />
    <label><input type="checkbox" name="remember" />记住我</label><br />
    <button>登录</button>
</form>

总结:老 ASP.NET Web Pages Razor 代码速查表

需求一行代码搞定
取参数Request["id"]
判断 POSTIsPost
跳转页面Response.Redirect("~/List.cshtml")
数据库查询db.Query("SELECT …", 参数)
数据库增删改db.Execute("INSERT …", 参数)
防注入永远用 @0、@1 参数,不要拼接 SQL
登录验证WebSecurity.Login(user,pwd)
退出登录WebSecurity.Logout()
当前用户名WebSecurity.CurrentUserName
判断是否已登录WebSecurity.IsAuthenticated

老项目维护就靠上面这些代码,99% 的功能都能搞定!

如果你现在要:

  • 把某个具体功能用 Web Pages 写出来(比如分页、搜索、导出 Excel)
  • 或者直接把整个老项目一键升级到 .NET 9 Razor Pages(推荐)

直接把需求甩过来,我 1 分钟给你完整可运行的 .cshtml 代码!

文章已创建 2838

发表回复

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

相关文章

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

返回顶部