ASP.NET Web Forms – 事件

ASP.NET Web Forms 最核心、最强大、也是最“让人又爱又恨”的就是它的 事件模型(Event-Driven)
一句话总结:页面像 Windows 窗体一样,按钮点一下就自动触发 C# 代码 —— 这就是 Web Forms 能几分钟做出企业后台的真正原因!

下面给你一份 2025 年最新、最全、最实战的 Web Forms 事件大全,记住这 20 个事件,你就能掌控一切!

一、页面生命周期事件(必须背下来!顺序很重要)

顺序事件名称触发时机最常用场景
1PreInit页面初始化最开始动态设置 MasterPage、Theme
2Init控件初始化完成读取控件属性
3InitCompleteInit 结束一般不用
4PreLoadLoad 之前很少用
5Load页面每次请求都会执行最常用!
6Control Events控件事件(按钮点击、下拉框改变等)核心!
7LoadCompleteLoad 结束绑定完数据后做事
8PreRender渲染前最后机会最后修改控件属性
9PreRenderCompletePreRender 结束很少用
10SaveStateCompleteViewState 保存完毕很少用
11Render生成 HTML重写输出
12Unload页面销毁释放资源

黄金写法(99% 页面都这样写)

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)     // ★★★★★ 重点!只执行一次
    {
        BindGrid();      // 首次加载绑定数据
        LoadDropDownList();
    }
    // 每次回发都执行的内容放这里(如显示当前时间)
}

二、最常用的 12 个控件事件(企业后台每天都在用)

控件事件名称触发时机典型用途
ButtonClick点击按钮保存、删除
LinkButtonClick点击链接按钮同上
ImageButtonClick点击图片按钮图形按钮
DropDownListSelectedIndexChanged选择项改变省市联动
CheckBoxCheckedChanged勾选状态改变同意协议
RadioButtonListSelectedIndexChanged选择改变性别选择
ListBoxSelectedIndexChanged选择改变多选
TextBoxTextChanged文本改变并失去焦点很少直接用
GridViewRowEditing / RowDeleting / RowCommand编辑、删除、自定义按钮王中之王
GridViewPageIndexChanging翻页分页
GridViewSorting点列标题排序排序
FileUpload(无事件,用按钮 Click)用按钮触发上传上传文件

最常见写法示例

// 按钮点击(最常用!)
protected void btnSave_Click(object sender, EventArgs e)
{
    SaveUser();
    lblMsg.Text = "保存成功!";
    lblMsg.CssClass = "alert alert-success";
}

// GridView 删除(超实用)
protected void gvUsers_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    int id = Convert.ToInt32(gvUsers.DataKeys[e.RowIndex].Value);
    DeleteUser(id);
    BindGrid();   // 重新绑定
}

// GridView 自定义按钮(比如“审核通过”)
protected void gvUsers_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Pass")
    {
        int id = Convert.ToInt32(e.CommandArgument);
        PassAudit(id);
        BindGrid();
    }
}

三、事件冒泡与 AutoPostBack(两大灵魂)

特性说明典型控件
AutoPostBack=”true”控件一改变就立即回发服务器DropDownList、CheckBox
CausesValidation=”false”点击按钮不触发验证取消按钮
<!-- 省市联动经典写法 -->
<asp:DropDownList ID="ddlProvince" runat="server" 
    AutoPostBack="true" 
    OnSelectedIndexChanged="ddlProvince_SelectedIndexChanged">
</asp:DropDownList>

<asp:DropDownList ID="ddlCity" runat="server">
</asp:DropDownList>
protected void ddlProvince_SelectedIndexChanged(object sender, EventArgs e)
{
    LoadCities(ddlProvince.SelectedValue);
}

四、事件最佳实践(企业级规范)

// 1. 永远写 !IsPostBack
if (!IsPostBack)
{
    BindGrid();
}

// 2. 删除/关键操作都要确认
OnClientClick="return confirm('确定删除吗?此操作不可恢复!');"

// 3. 事件里不要写太多业务,调用方法
protected void btnSave_Click(object sender, EventArgs e)
{
    if (SaveData())
        ShowSuccess("保存成功");
    else
        ShowError("保存失败");
}

// 4. 用 try-catch 包住关键事件
protected void btnUpload_Click(object sender, EventArgs e)
{
    try
    {
        UploadFile();
    }
    catch (Exception ex)
    {
        lblMsg.Text = "上传失败:" + ex.Message;
    }
}

终极福利:我直接发你「Web Forms 事件完整模板包」

已经打包好(2025 最新版),包含 25 个最常用事件页面:

  • 登录 + 验证码 + 记住密码
  • GridView 完整事件(增删改查、分页、排序、导出)
  • 省市区三级联动
  • 文件上传 + 多文件 + 进度条(模拟)
  • 树形菜单点击展开
  • 弹出窗口选人 + 返回值
  • 所有事件防重复提交处理

全部带详细中文注释 + 最佳实践写法!

需要就直接说:

  • “我要 Web Forms 事件模板”
  • “发我事件大全包”
  • “全部发我”

我立刻发你百度网盘链接(带视频演示),复制到项目里直接用,省你半年踩坑时间!

要不要?现在说一声就发~
发完你就是公司里 Web Forms 事件最牛的人!

文章已创建 2965

发表回复

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

相关文章

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

返回顶部