<%@ Page Language="C#" AutoEventWireup="true" CodeFile="page2.aspx.cs" Inherits="page2" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:CheckBoxList ID="CheckBoxList1" runat="server">
<asp:ListItem>唱歌</asp:ListItem>
<asp:ListItem>跳舞</asp:ListItem>
<asp:ListItem>读书</asp:ListItem>
<asp:ListItem>运动</asp:ListItem>
</asp:CheckBoxList>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /><br/>
<asp:CheckBox ID="CheckBox1" runat="server" OnCheckedChanged="CheckBox1_CheckedChanged"/>改变风格<br/>
<asp:CheckBox ID="CheckBox2" runat="server" OnCheckedChanged="CheckBox2_CheckedChanged" />改变颜色<br/>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
// 引入必要的命名空间
using System;
using System.Collections.Generic;
using System.Drawing; // 引入绘图命名空间,用于设置颜色
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; // 引入Web控件命名空间
// 声明一个继承自System.Web.UI.Page的页面类
public partial class page2 : System.Web.UI.Page
{
// 页面加载时的事件处理函数
protected void Page_Load(object sender, EventArgs e)
{
// 在这里,Page_Load是空的,没有执行任何操作
}
// CheckBox1的CheckedChanged事件处理函数
// 当CheckBox1的选中状态改变时触发
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
// 如果CheckBox1被选中,设置CheckBoxList1的背景色为浅米色,否则为天蓝色
this.CheckBoxList1.BackColor = CheckBox1.Checked ? Color.Beige : Color.Azure;
// 如果CheckBox1被选中,设置CheckBoxList1的重复方向为水平,否则为垂直
CheckBoxList1.RepeatDirection =
CheckBox1.Checked ? RepeatDirection.Horizontal : RepeatDirection.Vertical;
}
// CheckBox2的CheckedChanged事件处理函数
// 当CheckBox2的选中状态改变时触发
protected void CheckBox2_CheckedChanged(object sender, EventArgs e)
{
// 如果CheckBox2被选中
if (CheckBox2.Checked)
{
// 设置CheckBoxList1的前景色和Label1的前景色为红色
this.CheckBoxList1.ForeColor = Color.Red;
Label1.ForeColor = Color.Red;
}
else
{
// 否则,设置它们的前景色为黑色
this.CheckBoxList1.ForeColor = Color.Black;
Label1.ForeColor = Color.Black;
}
}
// Button1的Click事件处理函数
// 当Button1被点击时触发
protected void Button1_Click(object sender, EventArgs e)
{
// 初始化一个字符串,用于存储选中的复选框的文本
String str = "选择结果:";
// 清空Label1的文本
Label1.Text = "";
// 遍历CheckBoxList1中的所有项
for (int i = 0; i < CheckBoxList1.Items.Count; i++)
{
// 如果该项被选中,则将其文本添加到str中
if (CheckBoxList1.Items[i].Selected)
{
str += CheckBoxList1.Items[i].Text + "、";
}
}
// 如果str的结尾是"、",则去除它
if (str.EndsWith("、") == true)
str = str.Substring(0, str.Length - 1);
// 将str的值赋给Label1的Text属性
Label1.Text = str;
// 如果str的值仍然是"选择结果:",说明没有选择任何项
if (str == "选择结果:")
{
// 使用客户端脚本弹出一个警告框
string scriptString = "alert('请做出选择!')";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"warning",scriptString,true);
}
else
{
// 否则,显示Label1并设置其文本
Label1.Visible = true;
Label1.Text = str;
}
}
}
// 使用客户端脚本弹出一个警告框 string scriptString = "alert('请做出选择!')"; Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"warning",scriptString,true); 这个是怎么做到的?
在ASP.NET Web Forms中,Page.ClientScript.RegisterClientScriptBlock
方法用于在客户端(即用户的浏览器)上注册一段JavaScript代码,这样当页面呈现到浏览器时,这段JavaScript代码会被执行。
具体来说,Page.ClientScript.RegisterClientScriptBlock
方法的参数解释如下:
type
:通常传递当前页面的类型(例如this.GetType()
),用于确保注册的脚本块是唯一的,不会在同一个页面上被重复注册。key
:一个字符串,用于唯一标识这个脚本块。如果后续尝试注册具有相同type
和key
的脚本块,那么旧的脚本块将不会被替换,除非指定了第三个参数为true
。script
:要注册的JavaScript代码。addScriptTags
(可选,默认为false
):一个布尔值,指定是否在脚本块周围添加<script>
标签。如果设置为true
,则会在script
参数的内容前后添加<script type="text/javascript">
和</script>
标签。如果设置为false
,则只注册纯文本内容,并期望在稍后的某个时刻(例如,在其他脚本或模板中)将其包装在<script>
标签中。
在您提供的代码中:
string scriptString = "alert('请做出选择!')"; Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"warning",scriptString,true);
this.GetType()
是当前页面的类型,确保这个脚本块是唯一的。"warning"
是这个脚本块的唯一键。"alert('请做出选择!')"
是要执行的JavaScript代码,它会在浏览器中弹出一个警告框。true
表示在脚本块周围添加<script>
标签。
因此,当这行代码执行时,它会在客户端的HTML中插入一个 <script>
标签,其中包含 alert('请做出选择!')
这段JavaScript代码。当这个 <script>
标签被浏览器解析和执行时,就会弹出一个包含“请做出选择!”文本的警告框。