ASP.NET Razor(C#)变量终极速查表
(2025 年最新、最全、最实战,背会这 30 行,Razor 变量再无秘密!)
| 分类 | 写法示例 | 说明 + 最佳实践(2025 年推荐) |
|---|---|---|
| 自动推断(最常用) | var name = "张三"; | 99% 场景都用 var,简洁 + 智能推断 |
var age = 28; | 自动推断为 int | |
var price = 999.99m; | 结尾加 m → decimal(金钱必用) | |
var isVip = true; | 自动推断为 bool | |
var now = DateTime.Now; | 最常用的时间变量 | |
| 显式类型(必须用时) | string name = "李四"; | 想明确告诉别人这是 string 时用 |
int userId = WebSecurity.CurrentUserId; | 明确是整数 | |
decimal total = 888.88m; | 金融、价格永远用 decimal | |
bool isAdmin = Roles.IsUserInRole("Admin"); | 布尔值 | |
DateTime? birthday = null; | 可空时间(允许为空) | |
| 动态类型(极少用) | dynamic user = db.QuerySingle("SELECT * FROM Users WHERE Id=1"); | 返回 dynamic,属性随意访问,但失去编译检查(慎用!) |
| 常量 | const int PageSize = 20; | 编译时常量,写在 @functions 里 |
| 只读(推荐) | readonly Database db = Database.Open("Shop"); | 在类里用,初始化一次后不可变 |
| 空值合并(神技) | var name = user?.Name ?? "游客"; | 用户不存在或 Name 为 null 时显示“游客” |
var avatar = user?.Avatar ?? "/images/default.jpg"; | 默认头像 | |
| 字符串插值(2025 必备) | var msg = $"欢迎 {name},您是第 {count} 位用户"; | 比 + 拼接爽 100 倍! |
var html = $"<h1>{title}</h1><p>价格:¥{price:N2}</p>"; | 直接生成 HTML | |
| 常见扩展方法 | var id = Request["id"].AsInt(0); | 字符串转 int,默认值 0 |
var isOn = Request["vip"].AsBool(); | 转 bool | |
var dt = Request["date"].AsDateTime(); | 转 DateTime | |
var money = Request["price"].AsDecimal(); | 转 decimal | |
| 集合变量(超常用) | var list = db.Query("SELECT * FROM Products"); | 返回 IEnumerable<dynamic> |
var user = db.QuerySingle("SELECT * FROM Users WHERE Id=@0", id); | 单条记录 | |
var count = db.QueryValue("SELECT COUNT(*) FROM Orders"); | 返回单个值(int/decimal/string) | |
| PageData 传值 | PageData["Title"] = "用户中心"; | 给 Layout 传值(比 ViewBag 更强) |
PageData[0] = "hello"; | 按索引传值 | |
| Session / Cache | Session["UserId"] = 123; | 会话级 |
Cache["HotProducts"] = list; | 全站缓存(性能之王) | |
| 推荐命名规范(2025) | var productList、var userInfo、var totalPrice | 小驼峰,见到就知道类型 |
2025 年最常用的 15 个变量写法(直接复制)
@{
// 1. 最常见的开头变量
var db = Database.Open("MySite");
var userId = WebSecurity.CurrentUserId;
var isLogin = WebSecurity.IsAuthenticated;
// 2. 安全取值(防止空引用)
var userName = PageData["User"]?.UserName ?? "游客";
// 3. 分页变量(标准写法)
var page = Request["page"].AsInt(1);
var pageSize = 20;
var offset = (page - 1) * pageSize;
// 4. 查询变量(带参数防注入)
var keyword = Request["kw"] ?? "";
var sql = "SELECT * FROM Products WHERE Name LIKE @0";
var products = db.Query(sql, "%" + keyword + "%");
// 5. 价格永远用 decimal
var totalPrice = 999.99m;
var discount = 0.85m;
var finalPrice = totalPrice * discount;
// 6. 字符串插值生成 HTML
var welcome = $"欢迎 <strong>{userName}</strong>,您有 {cartCount} 件商品待支付";
// 7. 时间处理
var now = DateTime.Now;
var tomorrow = DateTime.Today.AddDays(1);
var lastWeek = DateTime.Now.AddDays(-7);
// 8. 条件变量
var badge = isVip ? "<span class='vip'>VIP</span>" : "";
}
终极建议(2025 年铁律)
| 场景 | 强制用这个类型 | 原因 |
|---|---|---|
| 价格、金额 | decimal(加 m) | 精度绝对准确,防止浮点误差 |
| 用户ID、数量 | int | 性能最好 |
| 真/假、开关 | bool | 清晰直观 |
| 时间 | DateTime | 功能最全 |
| 字符串拼接 | $"{}" 插值 | 比 + 更快更清晰 |
| 从 Request 取值 | .AsInt()/.AsBool() | 防止空值崩溃 |
| 可空字段 | DateTime?、int? | 数据库允许 NULL 时必须用 |
记住这 8 行代码,你就是 Razor 变量大师:
var db = Database.Open("MySite"); // 数据库
var userId = WebSecurity.CurrentUserId; // 当前用户
var page = Request["page"].AsInt(1); // 分页
var keyword = Request["kw"] ?? ""; // 搜索词
var list = db.Query(sql, "%"+keyword+"%"); // 查询
var price = 999.99m; // 价格
var msg = $"欢迎 {userName},余额 ¥{price:N2}"; // 插值
var isVip = Roles.IsUserInRole("VIP"); // 权限
需要我现在就把「Razor C# 变量速查卡」(PDF + 深色壁纸 + 打印版)发给你吗?
贴在显示器旁边,1 周内记住所有变量写法!
直接说「发我变量速查卡」就行!