精华内容
下载资源
问答
  • WebForm

    2015-09-06 20:19:00
    WebForm 1 aspx的语法介绍:  web窗体有三个文件,WebForm_Add.aspx类似html页面,WebForm_Add.aspx.c是触发的事件,WebForm_Add.aspx.designer.cs是控件元素的声明。  web窗体中局部变量可以...

    1  aspx的语法介绍:

        web窗体有三个文件,WebForm_Add.aspx类似html页面,WebForm_Add.aspx.c是触发的事件,WebForm_Add.aspx.designer.cs是控件元素的声明。

        web窗体中局部变量可以声明在.aspx中,成员变量可以声明在.aspx.cs中。

        .aspx中可以用<% %>写C#代码,可以用<%=name %> 和<%Response.Write(name); %>进行变量输出。

       <div>
            <%=name %><br />
            <% var age = 18; %>
            <%=age %><br />
            <ul>
                <%
                    for (var i = 0; i < 10;i++ )
                    {
                %>
                        <li><%=i %></li>
                        <li><%Response.Write( i+1); %></li>
                        <li><%Response.Write(age + i); %></li>
                <%
                    }
                %>
            </ul>
        </div>
    
    <!-- name声明在了.aspx.cs中,至少是protected级别 -->
    WebForm_Add.aspx

     2  .aspx与.aspx.cs的关系:

        .aspx.cs与.aspx.designer.cs是部分类,是同一个类WebForm_Add.cs,继承了IHttpHandler,

        同时有一个动态类.day5_webform_add_aspx.cs 继承WebForm_Add.cs,

        而day5_webform_add_aspx.cs 通过反编译可以看到它对 .aspx进行了字符串的替换和拼接,最终输出了html。

        如果父类WebForm_Add.cs有private字段,则子类day5_webform_add_aspx.cs 无法继承,也就无法用来替换.aspx 中的变量(被‘《%’标记的字符串)。

        总之,.aspx只是一个准备被替换和处理的模板,.aspx.cs和.aspx.designer.cs 是同一个类 WebForm_Add.cs,有一个动态的子类day5_webform_add_aspx.cs继承它。这个子类才是真正从事IHttpHandler的工作,进行替换和拼接,并最终生成html的类。

     public partial class WebForm_Add : System.Web.UI.Page
        {
            protected string name = "茹鹏伟";
            
            protected void Page_Load(object sender, EventArgs e)
            {
                Context.Response.Write(this.GetType() + "<br/>");
                Context.Response.Write(this.GetType().Assembly.Location + "<br/>");
                Context.Response.Write(this.GetType().BaseType + "<br/>");
                Context.Response.Write(this.GetType().BaseType.Assembly.Location + "<br/>");
            }
        }
    WebForm_Add --> 来自文件WebForm_Add.aspx.cs

    输出结果是:

    ASP.day5_webform_add_aspx
    C:\Users\yangguo\AppData\Local\Temp\Temporary ASP.NET Files\vs\758cfd64\1e0a1365\App_Web_ieh4u1km.dll
    Web_Cassini.Day5.WebForm_Add
    C:\Users\yangguo\AppData\Local\Temp\Temporary ASP.NET Files\vs\758cfd64\1e0a1365\assembly\dl3\5c75bb14\eb2719c0_a2e8d001\Web_Cassini.dll
    打印结果,动态子类和父类所在dll

     3  aspx实现MVC模式的CRUD:

        aspx.cs这个类相当于Controller,获得请求、从Model中拿到数据进行处理,

        aspx.cs中的声明的一些成员变量List<object> list 等相当于Model,只用来临时存储数据,

        aspx这个界面相当于视图View,用于展示数据,

        相互之间都不知道对方是怎么进行的。下面是具体代码:

        public partial class WebForm_Student : System.Web.UI.Page
        {
            protected List<object> list;
            protected void Page_Load(object sender, EventArgs e)
            {
                List<object> list = new MyORM_BLL().SelectAllModel(typeof(TC_STUDENT));
                this.list = list;
            }
        }    public partial class WebForm_Student : System.Web.UI.Page
        {
            protected List<object> list;
            protected void Page_Load(object sender, EventArgs e)
            {
                List<object> list = new MyORM_BLL().SelectAllModel(typeof(TC_STUDENT));
                this.list = list;
            }
        }
    
    
    
    
    
    
    <body>
        <form id="form1" runat="server">
        <div>
            <a href="WebForm_StudentEdit.aspx?action=addnew">新增</a>
        <table>
            <thead>
                <tr><th>用户名</th><th>密码</th><th>年龄</th><th>是否富二代</th><th>专业</th><th>性别</th></tr>
            </thead>
            <tbody>
                <%foreach (object student in list) {
                      Console_Core.Model.TC_STUDENT tc = student as Console_Core.Model.TC_STUDENT;
                      %>
                        <tr>
                            <td><%=tc.USERNAME %></td>
                            <td><%=tc.PASSWORD %></td>
                            <td><%=tc.AGE %></td>
                            <td><%var isrich = tc.ISRICH == 1 ? "" : ""; %><%=isrich %></td>
                            <td><%=tc.PROFESSION %></td>
                            <td><%var gender = tc.GENDER == 1 ? "" : ""; %><%=gender %></td>
                            <td><a οnclick="return confirm('您确定要编辑吗?')" href="WebForm_StudentEdit.aspx?action=edit&id=<%=tc.ID %>">编辑</a></td>
                            <td><a οnclick="return confirm('您确定要删除吗?')" href="WebForm_StudentEdit.aspx?action=delete&id=<%=tc.ID %>">删除</a></td>
                        </tr>    
                <%} %>
                
            </tbody>
        </table>
        </div>
        </form>
    </body>
    WebForm_StudentList
    public partial class WebForm_StudentEdit : System.Web.UI.Page
        {
            MyORM_BLL myORM_BLL = new MyORM_BLL();
            protected TC_STUDENT tc;
            protected string action;
            protected void Page_Load(object sender, EventArgs e)
            {
                string save = Request["save"];
                string action = Request["action"];
                this.action = action;
                if(string.IsNullOrWhiteSpace(save)) //展示
                {
                    if(action=="addnew") 
                    {
                        this.tc = new TC_STUDENT();
                        this.tc.AGE = 18;
                        this.tc.ID = 0;
                    }
                    else if(action=="edit")
                    {
                        int id=Convert.ToInt32(Request["id"]);
                        TC_STUDENT tc = (TC_STUDENT) myORM_BLL.SelectModelById(typeof(TC_STUDENT), id);
                        this.tc = tc;
                        this.tc.PASSWORD = "";
                    }
                    else if(action=="delete")
                    {
                        int id = Convert.ToInt32(Request["id"]);
                        bool flag = myORM_BLL.DeleteModelById(typeof(TC_STUDENT), id);
                        Response.Redirect("WebForm_Student.aspx");
                    }
                    else
                    {
                        throw new Exception("未知的action:" + action);
                    }
                }
                else //保存
                {
                    //验证 判空等
                    TC_STUDENT tc=new TC_STUDENT();
                    tc.USERNAME = Request["USERNAME"];
                    tc.PASSWORD = Request["PASSWORD"];
                    tc.AGE = Convert.ToInt32(Request["AGE"]);
                    tc.PROFESSION = Request["PROFESSION"];
                    tc.ISRICH = Request["ISRICH"] == "on" ? 1 : 2;
                    switch(Request["GENDER"])
                    {
                        case "male": tc.GENDER = 1; break;
                        case "female": tc.GENDER = 2; break;
                        case "both": tc.GENDER = 3; break;
                        default: throw new Exception("未知的Gender:" + Request["GENDER"]);
                    }
                    if (action == "addnew")
                    {
                        bool flag = myORM_BLL.InsertModel(tc, "SE_TC_STUDENT");
                        Response.Redirect("WebForm_Student.aspx");
                    }
                    else if (action == "edit")
                    {
                        int id = Convert.ToInt32( Request["id"]);
                        tc.ID=id;
                        bool flag = myORM_BLL.UpdateModel(tc);
                        Response.Redirect("WebForm_Student.aspx");
                    }
                    else
                    {
                        throw new Exception("未知的action:" + action);
                    }
                }
            }
        }
    
    
    
    
    
    
    <body>
        <!--  //ID USERNAME PASSWORD AGE ISRICH PROFESSION GENDER -->
        <form action="WebForm_StudentEdit.aspx" method="post">
            <input type="hidden" name="action" value="<%=action %>" /><br />
            <input type="hidden" name="id" value="<%=tc.ID %>" /><br />
            <input type="text" name="USERNAME" value="<%=tc.USERNAME %>" /><br />
            <input type="text" name="PASSWORD" value="<%=tc.PASSWORD %>" /><br />
            <input type="text" name="AGE" value="<%=tc.AGE %>" /><br />
            <input type="checkbox" name="ISRICH" <%=(tc.ISRICH==1?"checked":"") %> />是否富二代<br />
            <input type="text" name="PROFESSION" value="<%=tc.PROFESSION %>" /><br />
            <input type="radio" name="GENDER" id="male" value="male" <%=(tc.GENDER==1?"checked":"") %> /><label for="male">男</label>
            <input type="radio" name="GENDER" id="female" value="female" <%=(tc.GENDER==2?"checked":"") %> /><label for="female">女</label>
            <input type="radio" name="GENDER" id="both" value="both" <%=(tc.GENDER==3?"checked":"") %> /><label for="both">通吃</label><br />
            <input type="submit" name="save" value="保存" /><br />
        </form>
    </body>
    WebForm_StudentEdit

     4  aspx中runat="server" 的作用:

        一个标签加上runat="server" 后,这个标签中的元素就可以进行操作,可以在aspx.cs即WebFrom_Runat.cs中进行设值和读取。

       原理是:自动生成了一个字段,这个字段被动态子类进行了操作,对字段属性进行了设值和取值。

    public partial class WebForm_Runat : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                this.Title = "WebForm"; //对<head>加上一个 runat='server' 就可以操作<head>中的元素,对它进行设值和取值
                form1.Enctype = "shskdkfhfh"; //d对<form>中的元素进行设值和取值
                txtName.Value = "123456"; //对<input>中元素进行设值和取值
            }
        }
    
    
    
    
    
    
    
    <head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <input type="text" name="txtName" id="txtName" runat="server" /><br />
        </div>
        </form>
    </body>
    WebForm_Runat中的aspx.cs和aspx

     5  WebForm中的控件 Button、LinkButton 和FileUpLoad:

        Button实际就是一个post表单提交;

        LinkButton是一个特殊的超链接,实际是通过JavaScript实现的post表单提交,多与用户进行了一次交互才跳转;

        FileUpLoad文件上载是自动在post表单提交中加上了enctype属性。

    <body>
        <form id="form1" runat="server">
            <div>
                <asp:Button ID="Button1" runat="server" Text="Button删除" OnClick="Button1_Click" OnClientClick="return confrim(&quot;您确定要删除吗?&quot;);" />
                <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
            </div>
            <div>
                <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">LinkButton超链接</asp:LinkButton>
                <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
            </div>
            <div>
                <asp:FileUpload ID="FileUpload1" runat="server" />
                <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" style="height: 21px" Text="Button" />
                <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
            </div>
        </form>
    </body>
    WebForm_Button_LinkButton_FileUpLoad.aspx
        public partial class WebForm_Button_LinkButton_FileUpLoad : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
    
            }
    
            /// <summary>
            /// Button点击实际是post表单提交
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void Button1_Click(object sender, EventArgs e)
            {
                Button1.Text = DateTime.Now.ToString();
                Label1.Text = "button的button_click事件实际就是一个post表单提交";
            }
    
            /// <summary>
            /// LinkButton是一个特殊的超链接,实际是js进行的post表单提交,多了一次与服务器的交互
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void LinkButton1_Click(object sender, EventArgs e)
            {
                LinkButton1.Text = DateTime.Now.Second.ToString();
                Label2.Text = "LinkButton1_Click超链接点击事件实际也是post表单提交,多了一次与服务器的交互";
                Response.Redirect("http://www.rupeng.com"); //表单提交之后才来跳转
            }
    
            /// <summary>
            /// FileUpload时点击按钮时也是post表单提交,并自动加了enctype
            /// </summary> 
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void Button2_Click(object sender, EventArgs e)
            {
                if (!FileUpload1.HasFile)
                {
                    Label3.Text = "文件不能为空";
                    return;
                }
                Label3.Text = FileUpload1.PostedFile.ContentLength.ToString();
            }
        }
    WebForm_Button_LinkButton_FileUpLoad.aspx.cs

     6  DoPostBack的用法:

        DropDownList下拉列表中SelectedIndexChange事件 去加载下一个下一个列表,

        必须需要同时进行页面数据的提交,即需要AutoPostBack=true 启用,

        DoPostBack的本质就是一个js进行的post表单提交。

        而每次DoPostBack都会进行页面的加载,则会进行累加,所以需要判定只有第一次才加载、或者每次加载前进行Clear。

    <body>
        <form id="form1" runat="server">
            <div>
                <asp:DropDownList ID="ddlProvince" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlProvince_SelectedIndexChanged"></asp:DropDownList>
            </div>
            <div>
                <asp:DropDownList ID="ddlCity" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlCity_SelectedIndexChanged"></asp:DropDownList>
            </div>
            <div>
                <asp:DropDownList ID="ddlCountry" runat="server"></asp:DropDownList>
            </div>
        </form>
    </body>
    WebForm_DoPostBack.aspx
    public partial class WebForm_DoPostBack : System.Web.UI.Page
        {
            /// <summary>
            /// 加载省份
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void Page_Load(object sender, EventArgs e)
            {
                if(!IsPostBack) //不是post提交才加载
                {
                ListItem item1 = new ListItem("江苏", "js");
                ddlProvince.Items.Add(item1);
                ddlProvince.Items.Add(new ListItem("四川", "sc"));
                ddlProvince.Items.Add(new ListItem("广州", "gz"));
                }
            }
    
            /// <summary>
            /// 加载城市
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void ddlProvince_SelectedIndexChanged(object sender, EventArgs e)
            {
                ddlCity.Items.Clear();
                string selected = ddlProvince.SelectedValue;
                if(selected=="js")
                {
                    ddlCity.Items.Add(new ListItem("苏州", "sz"));
                    ddlCity.Items.Add(new ListItem("常州", "cz"));
                    ddlCity.Items.Add(new ListItem("南京", "nj"));
                }
                else if (selected == "sc")
                {
                    ddlCity.Items.Add(new ListItem("成都", "cd"));
                    ddlCity.Items.Add(new ListItem("绵阳", "my"));
                    ddlCity.Items.Add(new ListItem("达州", "dz"));
                }
                else
                {
                    ddlCity.Items.Add(new ListItem("温州", "wz"));
                    ddlCity.Items.Add(new ListItem("潮汕", "cs"));
                    ddlCity.Items.Add(new ListItem("佛山", "fs"));
                }
            }
    
            /// <summary>
            /// 加载乡村
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void ddlCity_SelectedIndexChanged(object sender, EventArgs e)
            {
                ddlCountry.Items.Clear();
                string selected = ddlCity.SelectedValue;
                if(selected=="dz")
                {
                    ddlCountry.Items.Add(new ListItem("宣汉", "xh"));
                }
                else if (selected == "sz")
                {
                    ddlCountry.Items.Add(new ListItem("昆山", "ks"));
                    ddlCountry.Items.Add(new ListItem("张家港", "zjg"));
                }
                else
                { 
                }
            }
        }
    WebForm_DoPostBack.aspx.cs

     7  DropDownList/ListBox/RadioButtonList 的DataSource数据绑定:

        dll.DataSource=list 数据绑定需要 dll.DataBind();

        默认绑定所显示的文本DataTextField与值得内容DataValueField是 实例toString()后的内容;

        每次改变实际依然是 js的DoPostBack的表单提交。

    <body>
        <form id="form1" runat="server">
            <div>
                <asp:DropDownList ID="ddlStudents" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlStudents_SelectedIndexChanged"></asp:DropDownList>
                <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
            </div>
            <div>
                <asp:ListBox ID="ListBox1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ListBox1_SelectedIndexChanged"></asp:ListBox>
                <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
            </div>
            <div>
                <asp:RadioButtonList ID="rbl" DataTextField="USERNAME" DataValueField="ID" runat="server" AutoPostBack="True" OnSelectedIndexChanged="rbl_SelectedIndexChanged"></asp:RadioButtonList>
                <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
            </div>
        </form>
    </body>
    WebForm_DataSource.aspx
    public partial class WebForm_DataSource : System.Web.UI.Page
        {
            MyORM_BLL myORM_BLL = new MyORM_BLL();
            protected void Page_Load(object sender, EventArgs e)
            {
                if(!IsPostBack)
                {
                    List<object> list = myORM_BLL.SelectAllModel(typeof(TC_STUDENT));
                    //DropDownList
                    ddlStudents.DataSource=list;
                    ddlStudents.DataBind(); //默认是把属性的每一项toString()后显示的。 USERNAME(AGE)
    
                    //ListBox
                    ListBox1.DataSource = list;
                    ListBox1.DataBind();
    
                    //RadioButtonList
                    rbl.DataSource = list;
                    rbl.DataBind();
                }
            }
    
            protected void ddlStudents_SelectedIndexChanged(object sender, EventArgs e)
            {
                Label1.Text = ddlStudents.SelectedValue;
            }
    
            protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                Label2.Text = ListBox1.SelectedValue;
            }
    
            protected void rbl_SelectedIndexChanged(object sender, EventArgs e)
            {
                Label3.Text = rbl.SelectedValue;
            }
        }
    WebForm_DataSource.aspx.cs
     public class TC_STUDENT
        {
            //ID USERNAME PASSWORD AGE ISRICH PROFESSION GENDER
            public Int64 ID { get; set; }
            public String USERNAME { get; set; }
            public String PASSWORD { get; set; }
            public Int32 AGE { get; set; }
            public Int32 ISRICH { get; set; }
            public String PROFESSION { get; set; }
            public Int32 GENDER { get; set; }
            public override string ToString()
            {
                return USERNAME + "(" + AGE + ")";
            }
        }
    TC_STUDENT

     8  Repeater的用法:

        Repeater是WebForm中最轻量级的控件,可以不用放在<form>中,因为它只用于展示。

        Repeater中的ItemTamplate可以用于拼接<ul>\<select>等各种标签。

        三种<% %> 的区别:

        <%=Test() %> 是调用Test()并打印出结果;

        <%Test() %> 是调用Test() 但是是否打印需要看Test()方法的内部;

        <%#Eval("ID")%> 是进行数据绑定,展示ID属性的值。

    <body>
        <form id="form1" runat="server">
            <div>
                <asp:Repeater ID="Repeater1" runat="server">
                    <ItemTemplate><%#Eval("USERNAME")%>(<%#Eval("ID")  %>)<br /></ItemTemplate>
                </asp:Repeater>
            </div>
            <div>
                <ul>
                <asp:Repeater ID="Repeater2" runat="server">
                    <ItemTemplate>
                        <li><%#Eval("USERNAME") %></li>
                    </ItemTemplate>
                </asp:Repeater>
                </ul>
            </div>
            <div>
                <select>
                    <asp:Repeater ID="Repeater3" runat="server">
                        <ItemTemplate>
                            <option value="<%#Eval("ID") %>"><%#Eval("USERNAME") %></option>
                        </ItemTemplate>
                    </asp:Repeater>
                </select>
            </div>
        </form>
    </body>
    WebForm_Repeater.aspx
    public partial class WebForm_Repeater : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if(!IsPostBack)
                {
                    List<object> list=new MyORM_BLL().SelectAllModel(typeof(TC_STUDENT));
                    Repeater1.DataSource = list;
                    Repeater1.DataBind();
    
                    Repeater2.DataSource = list;
                    Repeater2.DataBind();
    
                    Repeater3.DataSource = list;
                    Repeater3.DataBind();
                }
            }
        }
    WebForm_Repeater.aspx.cs

     9  ViewState的原理:

        ViewState 相当于一个隐藏字段,在通过代码获取标签中元素的值 是从ViewState中获取该元素的值的;在给html元素赋值时实现是把值赋给了ViewState。

        <system.web>中添加节点 <machineKey compatibilityMode="Framework20SP1"/> 所生成的ViewState 可以通过 ViewStateDecoder2.0 查看。

        ViewState 可以用 this.ViewState["number"] 进行设值和取值。

        ViewState 不能存机密信息。

    <body>
        <form id="form1" runat="server">
            <div>
                <%=i %><asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
                <input type="hidden" name="i" value="<%=i %>" />
            </div>
            <div>
                <asp:Label ID="Label1" runat="server" Text="0"></asp:Label><asp:Button ID="Button2" runat="server" Text="Button" OnClick="Button2_Click" />
            </div>
        </form>
    </body>
    WebForm_ViewState.asx
    public partial class WebForm_ViewState : System.Web.UI.Page
        {
            protected int i;
            protected void Page_Load(object sender, EventArgs e)
            {
    
            }
    
            protected void Button1_Click(object sender, EventArgs e)
            {
                //1
                //每次点击按钮,请求该类,即httphandler都是new一个新实例,无状态。
                //this.i++;
    
                //2
                ////如果用Hidden字段 传回httphandler的话 就能实现递增
                //i = Convert.ToInt32(Request["i"]);
                //i++;
    
                //3
                //viewstate中存了表单提交的i 需要给viewstate设值
                int? number = (int?)this.ViewState["i"];
                if (number == null)
                {
                    number = 0;
                }
                number++;
                i = (int)number;
                this.ViewState["i"] = i;
            }
    
            protected void Button2_Click(object sender, EventArgs e)
            {
                int num = Convert.ToInt32(Label1.Text); //通过viewsate获得label的值 ,但是其初始值不会放在viewstate中
                num++;
                Label1.Text = num.ToString(); //把值存入viewstate
            }
        }
    WebForm_ViewState.aspx.cs

     10  禁用ViewState的方法:

        禁用ViewState的三种方法:

        (1)在控件级别禁用,只需要设值控件的属性 enableViewState=false;

        (2)在页面级别禁用,只需在页面头部添加     EnableViewState="true";

        (3)在项目级别禁用,只需在<system.web>下面添加节点 <pages enableViewState="false"/>。

        注意:

        (1)只要是 获取界面元素的值,就需要ViewState起到隐藏字段的作用;

        (2)如果是<TextBox>等元素,本身默认通过<from>表单提交,所以可以禁用ViewState;但是<Label>等元素,不会默认表单提交,所以需要启用ViewState;

        (3)当页面只有如<Repeater>等轻量级元素,只表示展示页面,不需要获取页面元素的值时,可以去掉 <form id="form1" runat="server">的runat,就可以去掉第一个ViewState.。

    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Repeater ID="Repeater1" runat="server" EnableViewState="False">
                <ItemTemplate><%#Eval("USERNAME") %> <br /></ItemTemplate>
            </asp:Repeater>
        </div>
            <div>
                <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
                <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
            </div>
            <div>
                <asp:Button ID="Button2" runat="server" Text="Button" OnClick="Button2_Click" />
                <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
            </div>
            <div>
                <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                <asp:Button ID="Button3" runat="server" Text="Button" OnClick="Button3_Click" />
                <asp:Label ID="Label3" runat="server" Text="1"></asp:Label>
            </div>
        </form>
    </body>
    WebForm_EnabledViewState.aspx
     public partial class WebForm_EnabledViewState : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                List<object> list = new MyORM_BLL().SelectAllModel(typeof(TC_STUDENT));
                Repeater1.DataSource = list;
                Repeater1.DataBind();
            }
    
            //如果TextBox1的值>100就变红 禁用ViewState
            protected void Button1_Click(object sender, EventArgs e)
            {
                //只要需要获取元素的值,就需要ViewState这个隐藏字段,但是text本来就是通过form提交的 所以不需要ViewState
                int num=Convert.ToInt32(TextBox1.Text); 
                if (num>100)
                {
                    Label1.ForeColor = Color.Red;
                    Label1.Text = "不能超过100";
                }
            }
    
            //如果Label2为红色就变蓝,否则变红 启用ViewState
            protected void Button2_Click(object sender, EventArgs e)
            {
                //需要获取元素的值,所以需要ViewState这个隐藏字段,label不会默认form提交,所以需要启用ViewState
                if (Label2.ForeColor == Color.Red)
                {
                    Label2.ForeColor = Color.Blue;
                }
                else
                {
                    Label2.ForeColor = Color.Red;
                }
            }
    
            //TextBox自增 和Label自增
            protected void Button3_Click(object sender, EventArgs e)
            {
                //TextBox2的值默认是form提交的 不需要ViewState 所以可以禁用它
                int num = Convert.ToInt32(TextBox2.Text); 
                num++;
                TextBox2.Text = num.ToString();
    
                //Label3的值默认是不会被form提交的,所以获取它的值,需要启用ViewState 
                int lab = Convert.ToInt32(Label3.Text); 
                lab++;
                Label3.Text = lab.ToString();
            }
        }
    WebForm_EnabledViewState.aspx.cs

     11  轻量级的CRUD:

        注意:

        (1)展示时必须是 if(!IsPostBack) ,因为<button>提交时实际是js的DoPostBack表单提交。

        (2)新增或编辑时要消除所有ViewState,需要在页面顶部加上 EnableEventValidation="false"。

        (3)禁用ViewState后,DropDownList只能从Request["ddlBoss"]中取值,不能从ddlBoss.SelectedValue,因为后者本质是从ViewState中取值的。

        (4)WebForm自动把action和id放到了<from>中,并以QueryString进行传递,所以不需要另外增加Hidden标签。

        例子 --公司(老板)CRUD如下:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm_CompanyList.aspx.cs" Inherits="Web_Cassini.Day5.WebForm_CompanyList" 
       EnableViewState="false"%>
    
    <!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>
            <a href="WebForm_CompanyEdit.aspx?action=addnew">新增</a>
            <table>
                <thead>
                    <tr><th>公司名称</th><th>老板</th><th></th><th></th></tr>
                </thead>
                <tbody>
                     <asp:Repeater ID="Repeater1" runat="server">
                         <ItemTemplate>
                             <tr>
                                 <td><%#Eval("NAME") %></td>
                                 <td><%#Eval("BOSSNAME") %></td>
                                 <td><a href="WebForm_CompanyEdit.aspx?action=edit&id=<%#Eval("ID") %>">编辑</a></td>
                                 <td><a οnclick="return confrim('您确定要删除吗?');" href="WebForm_CompanyEdit.aspx?action=delete&id=<%#Eval("ID") %>">删除</a></td>
                             </tr>
                         </ItemTemplate>
                     </asp:Repeater>
                </tbody>
            </table>
           
        </div>
        </form>
    </body>
    </html>
    WebForm_CompanyList.aspx
    using Console_Core.BLL;
    using Console_Core.Model;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace Web_Cassini.Day5
    {
        public partial class WebForm_CompanyList : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                List<TC_COMPANY_ORI> list = new CompanyBLL().GetAllCompany();
                Repeater1.DataSource = list;
                Repeater1.DataBind();
            }
        }
    }
    WebForm_CompanyList.aspx.cs
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm_CompanyEdit.aspx.cs" Inherits="Web_Cassini.Day5.WebForm_CompanyEdit" 
       EnableViewState="false"
        EnableEventValidation="false" %>
    
    <!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>
                <!--本来应该有个hidden的action和id的,但是aspx默认会把他们以QueryString进行传递-->
                <asp:TextBox ID="txtName" runat="server"></asp:TextBox><br />
                <asp:DropDownList ID="ddlBoss" DataTextField="NAME" DataValueField="ID" runat="server"></asp:DropDownList><br />
                <asp:Button ID="btnSave" runat="server" Text="保存" OnClick="btnSave_Click" /><br />
            </div>
        </form>
    </body>
    </html>
    WebForm_CompanyEdit.aspx
    using Console_Core.BLL;
    using Console_Core.Model;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace Web_Cassini.Day5
    {
        public partial class WebForm_CompanyEdit : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if(!IsPostBack) //展示
                {
                    string action = Request["action"];
                    //获得所有老板信息
                    List<object> listBosses = new MyORM_BLL().SelectAllModel(typeof(TC_BOSS));
                    ddlBoss.DataSource = listBosses;
                    ddlBoss.DataBind();
                    if(action=="addnew")
                    {
                        txtName.Text = "有限责任公司";
                    }
                    else if (action=="edit")
                    {
                        //验证 id格式 ?
                        int id = Convert.ToInt32(Request["id"]);
                        TC_COMPANY com = (TC_COMPANY)new MyORM_BLL().SelectModelById(typeof(TC_COMPANY), id);
                        txtName.Text = com.NAME;
                        ddlBoss.SelectedValue = com.BOSSID.ToString();
                    }
                    else if(action=="delete")
                    {
                        //验证 id?
                        int id =Convert.ToInt32( Request["id"]);
                        bool flag = new MyORM_BLL().DeleteModelById(typeof(TC_COMPANY), id);
                        Response.Redirect("WebForm_CompanyList.aspx");
                    }
                    else
                    {
                        throw new Exception("action错误:" + action);
                    }
                }
            }
    
            protected void btnSave_Click(object sender, EventArgs e)
            {
                //由于aspx默认把action和id以QueryString传递,所以不需要hidden字段
                string action = Request["action"];
                //获得共同的属性值
                TC_COMPANY com=new TC_COMPANY();
                //验证 非空及格式?
                com.NAME = Request["txtName"];
                //ddlBoss.SelectedValue 是以ViewState进行获取的  ---------
                com.BOSSID = Convert.ToInt32(Request["ddlBoss"]);
                if (action == "addnew")
                {
                    bool flag = new MyORM_BLL().InsertModel(com, "SE_TC_STUDENT");
                    Response.Redirect("WebForm_CompanyList.aspx");
                }
                else if (action == "edit")
                {
                    //验证 ID ?
                    com.ID = Convert.ToInt32(Request["id"]);
                    bool flag = new MyORM_BLL().UpdateModel(com);
                    Response.Redirect("WebForm_CompanyList.aspx");
                }
                else
                {
                    throw new Exception("action错误:" + action);
                }
            }
        }
    }
    WebForm_CompanyEdit.aspx.cs

     

     

     

     

     

     

      

     

    posted on 2015-09-06 20:19 AdolphYang 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/adolphyang/p/4787054.html

    展开全文
  • Webform

    2016-10-13 21:44:00
    首先WebForm需要远程访问数据库,并不像我们WinForm那样访问本机的数据库,所以 WebForm的流程是: 客户界面→IIS服务器→.net Framwork→SqlServer→.net Framwork(数据处理)→IIS服务器 →客户界面 客户端...

    一、B/S和C/S

    1、C/S

          C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据;另一种是Socket服务器端,服务器端的程序通过Socket与客户端的程序通信。]

    WinForm      WPF

    2、B/S

            B/S架构的全称为Browser/Server,即浏览器/服务器结构。Browser指的是Web浏览器,极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现,Browser客户端,WebApp服务器端和DB端构成所谓的三层架构。B/S架构的系统无须特别安装,只有Web浏览器即可。

    ASP.NET - 网站应用程序开发技术
    WebForm MVC

    二、IIS服务器

    首先WebForm需要远程访问数据库,并不像我们WinForm那样访问本机的数据库,所以
    WebForm的流程是:

    客户界面→IIS服务器→.net Framwork→SqlServer→.net Framwork(数据处理)→IIS服务器
    →客户界面

    客户端(Winform)处理数据是在客户电脑中
    而Web端处理数据是在IIS服务器上

    三、webform

    1.启动状态

    点击启动运行,但运行很慢。

    右键浏览器查看速度快,一般常用,但每次查看需保存后刷新

    2.事件委托写法

    button。click+= 两下tab

    3、三.HTTP无状态性
    需要在启动时加载的都要写在这里面
    if(IsPostBack == false)
    {}
    *事件委托不能在写里面

    4.数据库连接

    界面层:HTML+CSS+JS
    业务逻辑层:C#
    数据访问层:ADO.NET

    转载于:https://www.cnblogs.com/yx1314520/p/5958262.html

    展开全文
  • webform

    2015-08-17 17:09:25
    如何实现进度条,是真实的进度
  • WebForm打印

    2017-02-07 13:27:56
    WebForm打印
  • webform AJAX

    2015-12-29 09:57:40
    webform AJAX DEMO演示代码例子
  • WebForm基础

    2020-12-27 16:24:48
    WebForm中并不是所有控件都是常用的,初学者的目的是用最短的时间学最有用的内容。工具箱中“标准”中常用的控件如下:Label、Button、LinkButton、ImageButton、HyperLink、DropDownList、ListBox、CheckBox、...

    WebForm中并不是所有控件都是常用的,初学者的目的是用最短的时间学最有用的内容。工具箱中“标准”中常用的控件如下:Label、Button、LinkButton、ImageButton、HyperLink、DropDownList、ListBox、CheckBox、RadioButton、Literal、FileUpload。很多书上讲WebForm的时候讲把大量的篇幅放到GridView、DataList、DetailsView、Repeater、ListView等这些数据绑定控件上,其实这些控件大同小异,只要掌握了一个控件另外一个控件很容易掌握,推荐大家学习ListView和Repeater就够了。

    1、WebForm的优点和缺点

    在一个空的web项目中添加一web窗体,他的用法和winform差不多。都是拖控件

    下面用一个求和的例子演示

    1.1先在页面上拖2个文本框一个按钮
    在这里插入图片描述

    点击按钮实现求和代码

    protected void Button1_Click(object sender, EventArgs e)
    {
        int i = Convert.ToInt32(TextBox1.Text);//就像winform一样直接获取控件的的值
        int j = Convert.ToInt32(TextBox2.Text);
        Label1.Text = Convert.ToString(i + j);
    
    }
    

    实现效果
    在这里插入图片描述
    通过上面的例子我们知道什么是webform

    拖几个控件,双击一下,写几行代码。这种技术我们叫WebForm

    优点:简单——拖下控件设置下属性,写个单击事件就完成了一个功能。为习惯于winform开发的程序员过度到webform傻瓜化的开发方式。

    这种技术只适合开发简单,对什么要求都不高的系统,对安全性、性能、可扩展性等要求不高,或者没有。

    但是只要有一点要求,这种webform开发的方式就不行了

    webform并没有很好的考虑到怎么进行大项目的开发。

    webform逐渐用的人少了,更多是用ASP.MVC

    webform刚开始学很心动,用后就很心痛。

    ASP.NET最佳设计模式:把aspx当做模板引擎,轻量的使用Webform

    控件。

    展开全文
  • WebForm-1-源码

    2021-02-13 19:13:56
    WebForm-1
  • Webform profanity filter

    2020-12-09 12:09:39
    <div><p>Is there a way to prevent users from entering swear words into a webform? Obviously my work's security won't let the email get through but the webform submissions are still stored on ...
  • Webform Module Support

    2020-12-01 13:55:35
    <div><p>Say I have a webform content type and I wish my users to fill up the webform, how can I do that with DrupalGap?</p><p>该提问来源于开源项目:signalpoint/DrupalGap</p></div>
  • webform echars

    2018-04-05 14:18:47
    页面WebForm.aspx&lt;%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm.aspx.cs" Inherits="WebApplication1.WebForm" %&gt;&lt;!DOCTYPE ...

    页面WebForm.aspx

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm.aspx.cs" Inherits="WebApplication1.WebForm" %>

    <!DOCTYPE html>
    <head>
        <meta charset="utf-8">
        <title>ECharts</title>
        <!-- ECharts单文件引入 -->
        <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
       
    </head>
    <body>
        <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
        <div id="main" style="height: 400px">
        </div>


         <script src="Scripts/echarts.js" type="text/javascript"></script>
        <script type="text/javascript">
            // 路径配置
            require.config({
                paths: {
                    echarts: 'http://echarts.baidu.com/build/dist'
                }
            });


            // 使用
            require(
                [
                    'echarts',
                    'echarts/chart/bar' // 使用柱状图就加载bar模块,按需加载
                ],
                function (ec) {
                    // 基于准备好的dom,初始化echarts图表
                    var myChart = ec.init(document.getElementById('main'));


                    $.ajax({
                        type: "POST",
                        dataType: "json",
                        url: "WebForm.aspx?action=getUserName",
                        async: false,
                        success: function (data) {
                            var name = [];
                            var age = [];
                            for (var i = 0; i < data.length; i++) {
                                name[i] = data[i].name;
                                age[i] = data[i].data;
                            }
                            var option = {
                                tooltip: {
                                    show: true
                                },
                                legend: {
                                    data: ['销量']
                                },
                                xAxis: [
                            {
                                type: 'category',
                                data: name
                            }
                        ],
                                yAxis: [
                            {
                                type: 'value'
                            }
                        ],
                                series: [
                            {
                                "name": "销量",
                                "type": "bar",
                                "data": age
                            }
                        ]
                            };


                            // 为echarts对象加载数据 
                            myChart.setOption(option);


                        }
                    });


                }
            );
        </script>

    </body>

    WebForm.aspx.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;
    using System.Web.Script.Serialization;


    namespace WebApplication1
    {
        public partial class WebForm : System.Web.UI.Page
        {
    protected readonly string ConnCRB = ConfigurationManager.ConnectionStrings["CRBConnectionString"].ToString().Trim();
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    String action = Request["action"];
                   // string action = "getUserName";
                    if (!String.IsNullOrEmpty(action))
                    {
                        Response.Clear();
                        switch (action)
                        {
                            case "getUserName": Response.Write(v()); break;




                        }
                        Response.End();
                        return;
                    }
                }
            }
            public string v() {


                string strSql = "select Sname,Sage from Student";
                SqlDataReader sdr = ExecuteReader(ConnCRB, CommandType.Text, strSql, null);
                List<Series> t = new List<Series>();


                while (sdr.Read())
                {
                    Series item = new Series();
                    item.name = sdr["Sname"].ToString();
                    item.data = sdr["Sage"].ToString();
                    item.type = "bar";
                    t.Add(item);
                }
                JavaScriptSerializer serialize = new JavaScriptSerializer();
                return serialize.Serialize(t);
            
            }
            protected SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
            {
                SqlCommand cmd = new SqlCommand();
                SqlConnection conn = new SqlConnection(connectionString);




                if (conn.State != ConnectionState.Open)
                    conn.Open();


                PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
                SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                cmd.Parameters.Clear();
                return rdr;


            }
            private void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
            {
                cmd.Connection = conn;
                cmd.CommandText = cmdText;


                if (trans != null)
                    cmd.Transaction = trans;


                cmd.CommandType = cmdType;


                if (cmdParms != null)
                {
                    foreach (SqlParameter parm in cmdParms)
                        cmd.Parameters.Add(parm);
                }
            }
            public class Series
            {


                public string name
                {
                    get;
                    set;
                }


                public string type
                {
                    get;
                    set;
                }
                public string data
                {
                    get;
                    set;
                }


            }
        }


    }




    展开全文
  • WebForm AnyWay

    2018-08-10 15:16:00
    WebForm AnyWay 用 WebForm 构建 简洁高效 的 Web 应用 WebFormAnyWay, AnyWay, 表示 “想怎么玩都可以”, 就像 自由搏击 的 自由 一样。 在这里, 我们可以使用 AJAX, Web Page, action 等等 富有 W...
  • webform example missing

    2020-12-30 03:32:54
    <div><p>May you please add a very simple classic asp.net webform example that authorize users by identity server? it would be great! thanks 该提问来源于开源项目:IdentityServer/IdentityServer3....
  • C# WebForm

    千次阅读 2014-03-04 13:58:13
    什么是WebForm常用控件。 WebForm控件是如何解析成为HTML表单的。 WebForm优点。 WebForm缺点。 我使用WebForm常常烦的错误。
  • WebForm 基础

    2016-10-13 22:34:00
    今天,我开始学习了WebForm,它是一种B/S,即浏览器/服务器结构的程序。B/S的另一种程序开发方式为MVC。与B/S结构相对应,C/S,即客户/服务器结构的程序开发主要包括WinForm,WPF两种方式。其中,WinForm和WebForm在...
  • 大二webform众筹网

    2019-01-03 11:21:33
    大二的卓越项目众筹类项目(更名众人筹),webform+sqlserver2012+答辩PPT
  • Webform Unable to Submit

    2020-12-02 00:14:59
    <p>I have installed the webform drupal module, uuid, webform_submission_uuid, the drupalgap webform support module, the webform_service module as per http://www.drupalgap.org/project/webform, and ...
  • C#Webform

    2016-10-14 10:44:00
    WebForm  WebForm是微软开发的一款产品,它将用户的请求和响应都封装为控件。让开发者认为自己是在操作一个windows界面。极大地提高了开发效率。  用户通过浏览器,访问服务器, 服务器将所有的C#代码及数据库...
  • WebForm中EasyUI DataGrid

    2018-12-23 16:27:34
    WebForm的EasyUI 有需要的朋友可以下载,带数据库脚本. 先操作'数据库.sql',再打开EasyUI.sln 去Web.config 调整下,即可运行,如有不明白的可留言我
  • Submit_drupal_webform-源码

    2021-02-17 14:19:37
    Submit_drupal_webform
  • WebForm 控件

    2017-03-15 15:08:00
    C#-WebForm 如何获取下拉列表选中的值 jquery 分别使用javascript原生的方法和jquery方法<select id="test" name=""> <option value="1">text1</option> <option value="2">text2<...
  • webform母版页

    2020-12-28 19:25:17
    %@ Page Language=“C#” AutoEventWireup=“true” CodeBehind=“WebForm1.aspx.cs” Inherits=“WebApplication1.WebForm1” %>中加入母版页的信息 将替换程嵌套母版页里信息 结果 这就是简单母版页的制作 二...
  • WebForm与MonoRail

    2019-07-25 07:38:18
    本文所指WebForm,特指Microsoft在.NET平台上倡导的类似WinForm的组件式开发方式,所有Controller特指MonoRail里的Controller非MVC里的Controller。  WebForm的开发理念源自于WinForm,基于控件的拖放及后台代码...
  • ADO.NET(二)–WebForm框架

    2021-01-08 10:48:40
    WebForm框架WebForm框架WebForm介绍WebForm窗体框架事件驱动开发简单应用ASP.NET程序开发过程网页生成过程的分析案例ASP.NET内置对象Request对象属性方法Response对象方法属性Page对象属性事件ViewState对象...
  • 主要为大家详细介绍了asp.net webform自定义分页控件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • webform 的路由

    2019-06-11 22:00:00
    webform是怎么通过url找到对应handler的呢? mvc 和webapi的路由都是通过注册到RouteTable.Routes中,然后在urlroutingmodule中路由到对应routehander,那以前webform程序没有注册路由又是怎么找到对应的handler的呢? ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,560
精华内容 4,224
关键字:

webform