当前位置:首页 > 问答 > 正文

ASP.Net 页面传值 ASP.Net中页面间常用的几种传值方法有哪些

📣 最新消息:2025年8月,.NET Aspire 9.4正式发布,带来性能优化与安全更新!ASP.NET Core 8.0持续迭代,Blazor框架新增组件级状态管理,传值方式更高效!🚀

ASP.Net 页面传值 ASP.Net中页面间常用的几种传值方法有哪些

ASP.NET页面传值大集合!6种方法+emoji趣味解析🎉

作为ASP.NET开发者,页面间传值是必备技能!今天用最接地气的方式,带你看透6种传值方法,附2025年最新实战案例!👇

QueryString传值 🔍

原理:通过URL参数传递数据,明文显示在地址栏。
适用场景:分页参数、简单非敏感数据(如用户ID)。
代码示例

// 传值页面
Response.Redirect("Page2.aspx?name=Alice&age=25");
// 接收页面
string name = Request.QueryString["name"];
int age = int.Parse(Request.QueryString["age"]);

优点:实现简单,支持直接访问。
缺点:数据暴露,URL长度限制(约2048字符)。

Session传值 🛒

原理:服务器端存储用户会话数据,生命周期贯穿整个会话。
适用场景:购物车、用户登录状态。
代码示例

// 存储数据
Session["Cart"] = new Liststring> { "手机", "耳机" };
// 读取数据
var cartItems = Session["Cart"] as List<string>;

优点:支持复杂对象,跨页面共享。
缺点:需管理Session生命周期,服务器资源消耗。

ASP.Net 页面传值 ASP.Net中页面间常用的几种传值方法有哪些

Server.Transfer传值 🔄

原理:服务器端跳转,通过原页面对象传递数据。
适用场景:需要保留原页面控件值的场景。
代码示例

// 传值页面
Server.Transfer("Page2.aspx");
// 接收页面(需强制转换原页面类型)
Page1 originalPage = (Page1)Context.Handler;
string value = originalPage.TextBox1.Text;

优点:数据不暴露于URL,性能较高。
缺点:代码复杂度增加,需处理类型转换。

Cookie传值 🍪

原理:客户端存储小量数据,通过请求头传递。
适用场景:用户偏好设置、自动登录。
代码示例

// 写入Cookie
HttpCookie cookie = new HttpCookie("Theme", "Dark");
Response.Cookies.Add(cookie);
// 读取Cookie
string theme = Request.Cookies["Theme"]?.Value;

优点:客户端持久化存储。
缺点:安全性低,数据大小限制(约4KB)。

Application传值 🌐

原理:全局共享数据,所有用户可访问。
适用场景:网站统计、公告信息。
代码示例

ASP.Net 页面传值 ASP.Net中页面间常用的几种传值方法有哪些

// 写入全局数据
Application["VisitCount"] = (int)Application["VisitCount"] + 1;
// 读取全局数据
int count = (int)Application["VisitCount"];

优点:跨用户共享,无生命周期限制。
缺点:线程安全需加锁,易引发并发问题。

自定义类传值 📦

原理:封装数据到自定义类,通过属性传递。
适用场景:复杂业务对象传递(如订单详情)。
代码示例

// 定义数据类
public class UserData { public string Name { get; set; } }
// 传值页面
UserData data = new UserData { Name = "Bob" };
Session["UserData"] = data;
// 接收页面
var userData = Session["UserData"] as UserData;

优点:结构清晰,扩展性强。
缺点:需额外定义类,增加代码量。

2025年新趋势:Model Binding传值 🧩

ASP.NET Core专属:通过模型绑定自动映射请求数据到方法参数。
代码示例

// 控制器方法
public IActionResult Edit(int id, [FromForm] UserModel model) {
    // 直接使用model中的数据
}

优点:类型安全,支持复杂对象,代码更简洁。
推荐指数:⭐⭐⭐⭐⭐

选对场景,效率翻倍!

方法 安全性 复杂度 适用场景
QueryString 简单参数、分页
Session 购物车、用户状态
Server.Transfer 保留原页面数据
Cookie 用户偏好、自动登录
Application 网站统计、全局公告
Model Binding ASP.NET Core表单数据

💡 小贴士

  • 敏感数据优先用Session或Model Binding!
  • 大数据量传值可结合数据库或缓存(如Redis)!
  • 2025年推荐:ASP.NET Core项目尽量使用内置的Model Binding和TempData!

赶紧收藏这篇攻略,下次传值不迷路!🚀

发表评论