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();
        }
    复制代码
  • 相关阅读:
    request.getParameter() 、 request.getInputStream()和request.getReader() 使用体会
    HTTP之Content-Length
    关于spring3中No Session found for current thread!and Transaction的配置和管理(转)
    Java数据类型和MySql数据类型对应一览
    Spring MVC 解读——View,ViewResolver(转)
    LeetCode 441. Arranging Coins
    LeetCode 415. Add Strings
    LeetCode 400. Nth Digit
    LeetCode 367. Valid Perfect Square
    LeetCode 326. Power of Three
  • 原文地址:https://www.cnblogs.com/yezuhui/p/6842698.html
Copyright © 2011-2022 走看看