Webform(五)——内置对象(Response、Request)和Repeater中的增删改

一、内置对象

(一)Response对象

1、简介:response 对象在ASP中负责将信息传递给用户.Response对象用于动态响应客户端请求,并将动态生成的响应结果返回到客户端浏览器中,使用Response对象可以直接发送信息给浏览器,重定向浏览器到另一个URL或设置cookie的值等.

2、方法:①、write方法:response.write **

功能:向客户端发送浏览器能够处理的各种数据,包括:html代码,脚本程序等.

实例:response.write "I LOVE YOU !!"

②、redirect方法:response.redirect("url")的作用是在服务器端重定向于另一个网页。


(二)Request对象

1、简介:Request对象的作用是与客户端交互,收集客户端的Form、Cookies、超链接,或者收集服务器端的环境变量。

request对象是从客户端向服务器发出请求,包括用户提交的信息以及客户端的一些信息。客户端可通过HTML表单或在网页地址后面提供参数的方法提交数据,然后通过request对象的相关方法来获取这些数据。request的各种方法主要用来处理客户端浏览器提交的请求中的各项参数和选项。

2、Request对象的五个集合:①、QueryString:用以获取客户端附在url地址后的查询字符串中的信息。

例如:stra=Request.QueryString ["strUserld"]

前台传递写法:地址 ?key=value&key=value

注意事项:●不需要保密的东西可以传,在地址栏中是可见的,可更改的。
                                                                       ●不要传过长东西,因为长度有限,过长会造成数据丢失。

②、Form:用以获取客户端在FORM表单中所输入的信息。(表单的method属性值需要为POST)

例如:stra=Request.Form["strUserld"]

③、Cookies:用以获取客户端的Cookie信息。

例如:stra=Request.Cookies["strUserld"]

④、ServerVariables:用以获取客户端发出的HTTP请求信息中的头信息及服务器端环境变量信息。

例如:stra=Request.ServerVariables["REMOTE_ADDR"],返回客户端IP地址

⑤、ClientCertificate:用以获取客户端的身份验证信息

例如:stra=Request.ClientCertificate["VALIDFORM"],对于要求安全验证的网站,返回有效起始日期。



二、利用Response对象和Request对象对Reparter中数据进行增删改

主页前台代码:

    </style>
    <%--光棒效果--%>
    <script type="text/javascript">
        window.onload = function () {
            var items = document.getElementsByClassName("tr_Item");
            var oldColor = "";
            for (var i = 0; i < items.length; i++) {
                items[i].onmouseover = function () {
                    oldColor = this.style.backgroundColor;
                    this.style.backgroundColor = "yellow";
                };
                items[i].onmouseout = function () {
                    this.style.backgroundColor = oldColor;
                };
            }
        };
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div >
            <a href ="Login.aspx"><asp:Label ID="Labdl" runat="server" Text="[请登录]"></asp:Label></a>
            <asp:Literal ID="Literal1" runat="server"></asp:Literal>
            <asp:Button ID="Btntc" runat="server" Text="退出登陆" />
        </div>
    <asp:Repeater ID="Repeater1" runat="server">
            <HeaderTemplate>
                <table id="tb1">
                    <tr id="tr_head">
                        <td>用户名</td>
                        <td>密码</td>
                        <td>昵称</td>
                        <td>性别</td>
                        <td>生日</td>
                        <td>年龄</td>
                        <td>民族</td>
                        <td>操作</td>
                    </tr>
            </HeaderTemplate>
            <ItemTemplate>
                <tr class="tr_Item" style="<%#Eval("Red")%>">
                    <td><%#Eval("UserName") %></td>
                    <td><%#Eval("PassWord") %></td>
                    <td><%#Eval("NickName") %></td>
                    <td><%#Eval("SexStr") %></td>
                    <td><%#Eval("BirthdayStr") %></td>
                    <td><%#Eval("Age") %></td>
                    <td><%#Eval("NationName") %></td>
                    <td>                        <a href="Delete.aspx?un=<%#Eval("UserName") %>" onclick="Del" >删除</a>
                        <a href="Update.aspx?un=<%#Eval("UserName") %>" target="_blank" onclick="Update">修改</a>
                    </td>
                </tr>
            </ItemTemplate>
            <FooterTemplate>
                </table>
            </FooterTemplate>
        </asp:Repeater>
        <asp:Button ID="btn1" runat="server" Text="添加用户" />
        <%--<input id="btn1" type="button" value="添加用户" /><br />--%>
        <%--<script>
            document.getElementById("btn1").onclick = function () {
                window.open("Add.aspx", "_blank");
            };
        </script>--%>
    </form>
</body>
</html>

主页后台代码:

 protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.Cookies["user"] != null)
        {
            Users u = new UsersDA().Select(Request.Cookies["user"].Value);

            Labdl.Text = u.NickName;
            Literal1.Text = ",欢迎你!";
        }

        if (!IsPostBack)
        {
            Repeater1.DataSource = new UsersDA().Select();
            Repeater1.DataBind();
        }
        Btntc.Click += Btntc_Click;
        btn1.Click += btn1_Click;

    }

    void btn1_Click(object sender, EventArgs e)
    {
        if (Request.Cookies["user"] != null)
        {
            Response.Redirect("Add.aspx");
        }
        else
        {
            Response.Redirect("Login.aspx");
        }
    }

    void Btntc_Click(object sender, EventArgs e)
    {
        //1清除cookies
        Response.Cookies["user"].Expires = DateTime.Now.AddDays(-5);
        //2刷新页面/跳到登陆页面
        Response.Redirect("Login.aspx");
    }
    public void Del(object sender, EventArgs e)
    {
        if (Request.Cookies["user"] != null)
        {
            Response.Redirect("Delete.aspx");
        }
        else
        {
            Response.Redirect("Login.aspx");
        }
    }
    public void Update(object sender, EventArgs e)
    {
        if (Request.Cookies["user"] != null)
        {
            Response.Redirect("Update.aspx");
        }
        else
        {
            Response.Redirect("Login.aspx");
        }
    }

主页后台

点击主页“”增加用户“按钮”,跳转到Add(添加)页面。

(一)增加

Add页面前台代码:

 <title></title>
    <%--判断两次密码是否一致--%>
<script type="text/javascript">
    window.onload = function () {
        document.getElementById("Button1").onclick = function () {
            var pwd1 = document.getElementById("TextBox2").value;
            var pwd2 = document.getElementById("TextBox3").value;
            if (pwd1 != pwd2) {
                document.getElementById("Label1").innerText = "两次密码不一致!";
                return false;
            }
        };
    };
    </script>
    <style type="text/css">
        #Label1 {
            color: red;
        }
    </style>

</head>
<body>
    <form id="form1" runat="server">
        <h1>用户添加</h1>
        用户名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
        <br />
        密码:<asp:TextBox ID="TextBox2" runat="server" TextMode="Password"></asp:TextBox><br />
        <br />
        重复密码:<asp:TextBox ID="TextBox3" runat="server" TextMode="Password"></asp:TextBox><asp:Label ID="Label1" runat="server" Text=""></asp:Label><br />
        <br />
        昵称:<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox><br />
        <br />
        性别:<asp:RadioButtonList ID="RadioButtonList1" runat="server" RepeatDirection="Horizontal" RepeatLayout="Flow">
            <asp:ListItem Value="True" Selected="True">男</asp:ListItem>
            <asp:ListItem Value="False">女</asp:ListItem>
        </asp:RadioButtonList><br />
        <br />
        生日:<asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>年
        <asp:DropDownList ID="DropDownList2" runat="server"></asp:DropDownList>月
        <asp:DropDownList ID="DropDownList3" runat="server"></asp:DropDownList>日
        <br />
        <br />
        民族:<asp:DropDownList ID="DropDownList4" runat="server"></asp:DropDownList><br />
        <br />
        <asp:Button ID="Button1" runat="server" Text="添加" />

    </form>
</body>
</html>

Add前台

Add页面后台代码:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {

            for (int i = DateTime.Now.Year; i >= 1900; i--)
            {
                ListItem li = new ListItem(i.ToString(), i.ToString());

                DropDownList1.Items.Add(li);
            }

            for (int i = 1; i <= 12; i++)
            {
                ListItem li = new ListItem(i.ToString(), i.ToString());

                DropDownList2.Items.Add(li);
            }

            for (int i = 1; i <= 31; i++)
            {
                ListItem li = new ListItem(i.ToString(), i.ToString());

                DropDownList3.Items.Add(li);
            }

            DropDownList4.DataSource = new NationData().Select();
            DropDownList4.DataTextField = "NationName";
            DropDownList4.DataValueField = "NationCode";
            DropDownList4.DataBind();
        }

        Button1.Click += Button1_Click;

    }

    void Button1_Click(object sender, EventArgs e)
    {
        Users u = new Users();
        u.UserName = TextBox1.Text;
        u.PassWord = TextBox3.Text;
        u.NickName = TextBox4.Text;
        u.Sex = Convert.ToBoolean(RadioButtonList1.SelectedItem.Value);
        string date = DropDownList1.SelectedValue + "-" + DropDownList2.SelectedValue + "-" + DropDownList3.SelectedValue;
        u.Birthday = Convert.ToDateTime(date);
        u.Nation = DropDownList4.SelectedItem.Value;

        bool ok = new UsersDA().Insert(u);

        //3、提示添加成功
        if (ok)
        {
            Response.Write("<script>alert(‘添加成功!‘)</script>");
            Response.Write("<script>this.opener.location.href=‘Main.aspx‘;this.close();</script>");
        }
        else
        {
            Response.Write("<script>alert(‘添加失败!‘)</script>");
        }

    }

Add后台

注:在Add页面中点击“”“添加”按钮,会提示添加是否成功,若添加成功,关闭Add页面,刷新Main主页面。在这里用到了Response对象中的write方法!



(二)、删除

Delete页面前台代码:无

Delete页面后台代码:

protected void Page_Load(object sender, EventArgs e)
    {
        //1、获得要删除的主键值,username
        string Uname = Request["un"].ToString();

        //2、删除
        new UsersDA().Delete(Uname);

        //3、调回显示页面
        Response.Redirect("Main.aspx");
    }

Delete后台

注:在这里用到了Response对象中的Redirect方法和Request对象中的QueryString集合,当然,在用QueryString集合时,需要Main主页里面写传递,这个可以见上面的Main主页前台代码。



(三)、修改

Update前台代码:

<form id="form1" runat="server">
     <h1>用户修改</h1>
        用户名:<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label><br />
        <br />
        密码:<asp:TextBox ID="TextBox2" runat="server" TextMode="Password"></asp:TextBox><br />
        <br />
        重复密码:<asp:TextBox ID="TextBox3" runat="server" TextMode="Password"></asp:TextBox><asp:Label ID="Label1" runat="server" Text=""></asp:Label><br />
        <br />
        昵称:<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox><br />
        <br />
        性别:<asp:RadioButtonList ID="RadioButtonList1" runat="server" RepeatDirection="Horizontal" RepeatLayout="Flow">
            <asp:ListItem Value="True">男</asp:ListItem>
            <asp:ListItem Value="False">女</asp:ListItem>
        </asp:RadioButtonList><br />
        <br />
        生日:<asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>年
        <asp:DropDownList ID="DropDownList2" runat="server"></asp:DropDownList>月
        <asp:DropDownList ID="DropDownList3" runat="server"></asp:DropDownList>日
        <br />
        <br />
        民族:<asp:DropDownList ID="DropDownList4" runat="server"></asp:DropDownList><br />
        <br />

        <asp:Button ID="Button1" runat="server" Text="修改" />
    </form>

Update后台代码:

//建一个变量来存储原密码
    string pwd = "";
    protected void Page_Load(object sender, EventArgs e)
    {
        //1、将传过来的主键值接收
        string uname = Request["un"].ToString();

        //2、通过主键值将对象查出来
        Users u = new UsersDA().Select(uname);

        pwd = u.PassWord;

        if (!IsPostBack)
        {
            for (int i = DateTime.Now.Year; i >= 1900; i--)
            {
                ListItem li = new ListItem(i.ToString(), i.ToString());

                DropDownList1.Items.Add(li);
            }

            for (int i = 1; i <= 12; i++)
            {
                ListItem li = new ListItem(i.ToString(), i.ToString());

                DropDownList2.Items.Add(li);
            }

            for (int i = 1; i <= 31; i++)
            {
                ListItem li = new ListItem(i.ToString(), i.ToString());

                DropDownList3.Items.Add(li);
            }

            DropDownList4.DataSource = new NationData().Select();
            DropDownList4.DataTextField = "NationName";
            DropDownList4.DataValueField = "NationCode";
            DropDownList4.DataBind();

            //3、将对象中的数据绑定到每一个控件上去
            Label2.Text = u.UserName;
            TextBox4.Text = u.NickName;

            foreach (ListItem li in RadioButtonList1.Items)
            {
                if (u.Sex)
                {
                    if (li.Value == "True")
                    {
                        li.Selected = true;
                    }
                }
                else
                {
                    if (li.Value == "False")
                    {
                        li.Selected = true;
                    }
                }
            }

            DropDownList1.SelectedValue = u.Birthday.Year.ToString();
            DropDownList2.SelectedValue = u.Birthday.Month.ToString();
            DropDownList3.SelectedValue = u.Birthday.Day.ToString();
            DropDownList4.SelectedValue = u.Nation;

        }

        Button1.Click += Button1_Click;

    }

    void Button1_Click(object sender, EventArgs e)
    {
        //1、构建一个Users对象
        Users u = new Users();
        u.UserName = Label2.Text;

        //获取密码
        if (TextBox2.Text == "" && TextBox3.Text == "")
        {
            u.PassWord = pwd;
        }
        else
        {
            u.PassWord = TextBox3.Text;
        }
        u.NickName = TextBox4.Text;
        u.Sex = Convert.ToBoolean(RadioButtonList1.SelectedItem.Value);
        string date = DropDownList1.SelectedValue + "-" + DropDownList2.SelectedValue + "-" + DropDownList3.SelectedValue;
        u.Birthday = Convert.ToDateTime(date);
        u.Nation = DropDownList4.SelectedItem.Value;

        //2、将此对象添加到数据库去
        bool ok = new UsersDA().Update(u);

        //3、提示添加成功
        if (ok)
        {
            Response.Write("<script>alert(‘修改成功!‘)</script>");
            Response.Write("<script>this.opener.location.href=‘Main.aspx‘;this.close();</script>");
        }
        else
        {
            Response.Write("<script>alert(‘修改失败!‘)</script>");
        }

注:●在这里用到了Response对象中的write方法和Request对象中的QueryString集合,当然,在用QueryString集合时,需要Main主页里面写传递,这个可以见上面的Main主页前台代码。
      ●点击“”修改“”按钮,弹提示框,若添加成功,关闭Update页面,刷新Main主页面。

后注:部分重要代码

1、js代码判断两次密码是否一致

<script type="text/javascript">
    window.onload = function () {
        document.getElementById("Button1").onclick = function () {
            var pwd1 = document.getElementById("TextBox2").value;
            var pwd2 = document.getElementById("TextBox3").value;
            if (pwd1 != pwd2) {
                document.getElementById("Label1").innerText = "两次密码不一致!";
                return false;
            }
        };
    };
    </script>

js密码

2、弹框显示添加/修改是否成功,成功则刷新主页面reparter数据

this.opener.location.href=‘Main.aspx‘:跨界面刷新主页面

if (ok)
        {
            Response.Write("<script>alert(‘添加成功!‘)</script>");
            Response.Write("<script>this.opener.location.href=‘Main.aspx‘;this.close();</script>");
        }
        else
        {
            Response.Write("<script>alert(‘添加失败!‘)</script>");
        }

添加

if (ok)
        {
            Response.Write("<script>alert(‘修改成功!‘)</script>");
            Response.Write("<script>this.opener.location.href=‘Main.aspx‘;this.close();</script>");
        }
        else
        {
            Response.Write("<script>alert(‘修改失败!‘)</script>");
        }

修改

时间: 2024-11-05 12:34:54

Webform(五)——内置对象(Response、Request)和Repeater中的增删改的相关文章

Webform(内置对象-Response与Redirect、QueryString传值、Repeater删改)

一.内置对象(一)Response - 响应请求对象1.定义:Response对象用于动态响应客户端请示,控制发送给用户的信息,并将动态生成响应.Response对象只提供了一个数据集合cookie,它用于在客户端写入cookie值.若指定的cookie不存在,则创建它.若存在,则将自动进行更新.结果返回给客户端浏览器.2.方法(1)Redirect用法:Response.Redirect("url")作用是在服务器端重定向于另一个网页(2)Write功能:向客户端发送浏览器能够处理的

JSP最常用的五种内置对象(out,request,response,session,application)

为了简化开发过程,JSP提供了一些内置对象,它们由容器实现和管理.开发者在JSP页面中无需声明,无需实例化就可使用.主要有out,request,response,session,application,pageContext,page,config和exception这九个,其中前五个最常用. out out对象为客户打开输出流,向客户端发送输出流.简单来说就是向客户端输出数据. 常用方法: out.print("hello world"); //输出到浏览器 out.print(2

webform(内置对象)

一.内置对象 (一)Response - 响应请求对象1.定义:Response对象用于动态响应客户端请示,控制发送给用户的信息,并将动态生成响应.Response对象只提供了一个数据集合cookie,它用于在客户端写入cookie值.若指定的cookie不存在,则创建它.若存在,则将自动进行更新.结果返回给客户端浏览器.2.方法(1)Redirect用法:Response.Redirect("url")作用是在服务器端重定向于另一个网页(2)Write功能:向客户端发送浏览器能够处理

重温ASP.NET内置对象之Request

Active ServerPages 提供内建对象,这些对象使用户更容易收集通过浏览器请求发送的信息.响应浏览器以及存储用户信息.ASP.NET 包含一系列类,用于封装这些上下文信息. ASP.NET主要包含六大类: 1.      Response提供对当前页的输出流的访问. 2.      Request提供对当前页请求的访问,其中包括请求标题.Cookie.客户端证书.查询字符串等. 3.      Server对象的属性反映了Web服务器的各种信息,它提供了服务器可以提供的各种服务. 4

jsp常用内置对象---response

一.response内置对象介绍 response对象与request对象对应,它用于响应客户端请并向客户端输出信息.并且,在JSP页面中,response就是HttpServletResponse类的一个对象,可以直接使用response在JSP页面中调用HttpServletResponse类的所有方法.response最常用sentRedirect(String locationURL)方法执行页面跳转. 二.response对象常用方法 setContentLength(int len)

ASP内置对象(Response对象)

一.内置对象简介 ASP3.0 内置了 Application.ASPError.Request.Response.Session.ObjectContext. Server 等 7 个对象(Object),而且每个对象有各自的属性.方法.集合或事件. 对象:就好比我们生活中所看到的各种物体. 属性:是用来描述对象的特征. 方法:是用来执行对象的动作. 集合:指一群放在一起的"值". 事件:是在某些情况下发生特定的信号警告您. Response对象:这个对象可用来输出由服务器端至到客户

JSP内置对象---response 响应

将response.jsp 页面的html标签(包括html.head.body)全部删掉. <%@ page language="java" import="java.util.*,java.io.*" contentType="text/html; charset=utf-8" %><% response.setContentType("text/html;charset=utf-8");//设置响应的M

内置对象之request对象

内置对象就是(容器)已经创建好的对象,可以被直接使用.当用户发送一个请求给容器,它就会自动创建一个对象来处理客户端发送来的消息,如request这个对象,可以获取到用户(客户端)发送来的信息.它的常见方法如下: String getHeader(String var1);取得请求头信息,根据请求头名称取得对应的值 String getMethod();取得请求的方式 String getPathInfo();取得额外路径 String getContextPath();取得当前项目的根路径 St

Webform 内置对象 Response对象、Request对象,QueryString

Request对象:获取请求Request["key"]来获取传递过来的值 QueryString:地址栏数据传递 ?key=value&key=value注意事项:不需要保密的东西可以传不要传过长东西,因为长度有限,过长会造成数据丢失 Response对象:响应请求Response.Write("<script>alert('添加成功!')</script>");Response.Redirect("Default.asp