zoukankan      html  css  js  c++  java
  • ASP.NET服务端基本控件介绍

    ASP.NET服务端基本控件介绍

    大概分为三种控件:

    HTML控件,ASP.NET把HTML控件当成普通字符串渲染到浏览器端,不去检查正确性,无法在服务端进行处理
    ASP.NET服务端控件,经过ASP.NET高度封装的控件,运行在服务端,可以用C#代码进行操作,
    会渲染到客户端为HTML控件
    runat=server的HTML控件,在HTML控件中添加runat="server",也是运行在服务端,也可以用C#代码操作
    也会渲染成HTML,不像ASP.NET服务端控件那样高度封装,和服务端控件相比:
    如果控件没有被ASP.NET服务端控件封装时,用这个很方便。

    ASP.NET服务端控件是对HTML的封装,在C#代码中就可以用 txt.Text="abc“方式来调用,但被人滥用,
    应该 物尽其用,服务端控件在内网系统(OA),互联网系统的后台部分访问频率不高的很适合用

    所有的ASP.NET大部分都是从 Control,WebControl类继承的,几乎都有的成员有:
    1. ClientID, 获得控件在客户端的ID,控件在服务端的ID不一定等于客户端的ID,如 ListView 就不是
    因此如果要在客户端通过 DOM,JQuery的 getElementByid,$("#id")来操作最好不要写服务端ID,
    而是 $("#<%=txt1.ClientID%>") 或 document.getElementById('<%=Button1.ClientID %>')
    2. Visible 属性,控件是否可见,如果Visible=False 是不会渲染到HTML中的,
    和HTML的style.display='none' 效果是不一样的
    3. CssClass 属性,控件的样式名,就是HTML中控件的 Class 属性,也可单独修改 BackColor,等属性,
    但是不建议这么做,因为会生成很多内联样式,占带宽,不便统一修改
    4. Attributes, 用于设置获取控件的额外属性,和DOM中的 setAttribut(),getAttribut()一样
    Button1.Attributes["code"] = "5"; //在HTML中为Button1增加一个 code 属性,并赋值为5
    Button1.Attributes["onmouseover"] = "alert('hello!')"; //增加一个onmouseover事件

    ASP.NET服务端基本控件

    1. Lable控件,Text属性为显示的文本,默认渲染成 <span>,当设置 AssociatedControlID属性
    用于关联一个控件时,则会渲染成<Label>并且将 for 属性设置为被关联的控件的ClientID
    2. Literal控件,也是展示一段文本,但是不会渲染额外的标签,就是将Text属性的值展示出来
    还有一个功能就是 Mode属性的Encode,可以将Text里面的代码转义HTML,<将转换成&lt; 防止XSS跨站
    3. TextBox控件,文本框控件,TextMode属性取值SingleLine,MultiLine,Password,分别渲染成:
    input(type=text),textarea和input(type=password),当AutoPostBack属性为 true的时候,
    用户焦点离开TextBox就会造成页面Post提交,实现原理就是 TextChanged事件,文本发生变化
    时事件触发,ASP.NET提交表单最好用调用 __doPostBack方法
    4. RadioButton控件,渲染为input(type=radio),通过GroupName属性进行分组
    5. Button控件,OnClientClick属性,当用户点击时在浏览器执行的代码,渲染成 input(type=button)
    6. LinkButton控件,渲染成超链接,href为一段javascript代码,进行表单的POST,无法"在新窗口中打开连接"
    7. ImageButton控件,显示为图片,渲染成 input(type=image)
    Button,LinkButton,ImageButton等控件都有CommandName,CommandArgument两个属性和 Command 事件
    可以让多个按钮共享一个 Command 事件处理函数,通过读取事件对象 e 的CommandName,CommandArgument
    两个属性读取被点击按钮上设置的这两个参数来执行不同的操作,如编辑,删除多行数据
    8. Panel控件,用来存放一些控件,当Visibe设为False的时候,里面的控件都全部隐藏,默认渲染成<DIV>
    如果设置了 GroupingText属性(为控件设一个边框并设置标题),那么就渲染为含有<fieldset>的div标签,
    也就是GroupBox效果
    9. HyperLink控件,超链接,和LinkButton不一样(常考),不会向服务器端Post,就是一个超链接,
    NavigateURL:链接地址,Text:显示文本,如果设定imageUrl则会显示图片超链接
    主要优势在于会自动将虚拟路径转换为客户端路径,渲染后就是一个 <a>
    10. FileUpload控件,文件上传控件,渲染成input(type=file),属性:
    FileContent 以流形式获得上传的文件
    HasFile Bool值,表示用户是否选择文件
    FileName 文件名,如: a.jpg
    PostedFile 将要上传的文件,里面也有 FileName 结果为: C:AAa.jpg ,可获得文件详细信息
    SaveAs方法用于将文件保存到磁盘的指定位置,注意:只允许上传指定类型文件,上传文件夹不给执行

    注意:
    默认最大的上传文件只有 4MB ,如想更大,则需要修改 Web.Conf 的<system.web>中,增加如下属性:
    <httpRuntime maxRequestLength="10240"/> // 按KB计算,1024KB = 1MB

    11.MultiView,View 用来作简单的向导,一个MultiView包含多个View,View必须在MultiView里面
    ActiveViewIndex 当前活动视图控件,默认为-1 不显示,从0开始设置
    ActiveViewChanged事件 当视图改变时所触发的事件

    12.Wizard向导 是MultiView的升级版,大部份都封装好了的

    13.ImageMap热点地图 主要是对图片区域进行处理,如中国地图之类的
    ImageAlign 指定图片地址
    HotSpots 区域的设置,上,下,左,右
    HotSpotMode 导航的行为,是否导致回发

    文件上传案例: FileUpload1 为上传控件ID
    复制代码
    if (FileUpload1.HasFile) //判断用户是否选择了文件
    {
        string path = Server.MapPath("~/upload/");  //得到上传路径
        FileUpload1.SaveAs(path + FileUpload1.FileName); //保存文件
        Response.Write("<script>alert('上传成功!')</script>");
    }
    else
    {
        Response.Write("<script>alert('上传失败!')</script>");
    }
    复制代码
    完美上传功能:
    复制代码
        protected void Button1_Click(object sender, EventArgs e)
        {
            if (FileUpload1.HasFile)
            {
                // 将虚拟地址转换成物理地址
                string dirP = Server.MapPath("~/UpLoad/");
    
                // 判断目录是否存在,不存在则创建
                if (!Directory.Exists(dirP))
                {
                    Directory.CreateDirectory(dirP);
                }
    
                //得到扩展名
                string ExtName = Path.GetExtension(FileUpload1.FileName).ToLower();
    
                //判断上传的文件格式
                if (ExtName != ".jpg" && ExtName != ".gif")
                {
                    Page.ClientScript.RegisterStartupScript(typeof(Page), null, "alert('格式不正确!')", true);
                    return;
                }
    
                // 通过 GetFileName() 方法 得到不会重复的文件名
                string FileName =  GetFileName() + ExtName;
    
                // 用SaveAs方法保存文件,里面必须要 物理路径
                FileUpload1.SaveAs(dirP + FileName);
                Page.ClientScript.RegisterStartupScript(typeof(Page), null, "alert('上传成功!')", true);
                Label1.Text = "上传的文件名:" + FileUpload1.FileName + "<br />" +
                                "文件大小:" + FileUpload1.PostedFile.ContentLength + "<br />" +
                                "文件类型:" + FileUpload1.PostedFile.ContentType + "<br />" +
                                "保存路径:" + dirP + FileName;
                Image1.ImageUrl = ("~/UpLoad/") + FileName;
            }
            else
            {
                Page.ClientScript.RegisterStartupScript(typeof(Page), null, "alert('请选择文件!')", true);
            }
        }
        // 通过取得当前时间来得到 不重复的文件名
        public string GetFileName()
        {
            StringBuilder file = new StringBuilder();
            file.Append(DateTime.Now.Year);
            file.Append(DateTime.Now.Month);
            file.Append(DateTime.Now.Day);
            file.Append(DateTime.Now.Second);
            file.Append(DateTime.Now.Millisecond);
    
            return file.ToString();
        }
    复制代码
  • 相关阅读:
    魅族--魅蓝metal
    小米2015.11.24 雷军:我所有的向往
    微软2015.10.4发布会
    创意app1
    奇怪的想法2
    奇怪想法1
    对不起,我爱你(悲剧,慎入)
    聊聊台式机1
    聊聊笔记本1--人生第一台笔记本
    聊聊路由器1
  • 原文地址:https://www.cnblogs.com/yezuhui/p/6842698.html
Copyright © 2011-2022 走看看