ASP.NET Razor – C# 变量

ASP.NET Razor(C#)变量终极速查表

(2025 年最新、最全、最实战,背会这 30 行,Razor 变量再无秘密!)

分类写法示例说明 + 最佳实践(2025 年推荐)
自动推断(最常用)var name = "张三";99% 场景都用 var,简洁 + 智能推断
var age = 28;自动推断为 int
var price = 999.99m;结尾加 mdecimal(金钱必用)
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 / CacheSession["UserId"] = 123;会话级
Cache["HotProducts"] = list;全站缓存(性能之王)
推荐命名规范(2025)var productListvar userInfovar 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 周内记住所有变量写法!
直接说「发我变量速查卡」就行!

文章已创建 2863

发表回复

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

相关文章

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

返回顶部