• asp.net


    1. 验证一般要做客户端js验证及服务器端验证

      微软的验证控件会自动生成客户端js脚本以及服务器端验证代码。

      Page.IsValid:当页面上所有的验证控件在服务器端严重通过后,该属性为true, 

      为了防止用户的恶意攻击及禁用掉js,一定要在服务端判断Page.IsValid是否为true,再执行其他的逻辑代码。

      验证控件生成的服务器端验证代码,默认是在Page_Load事件之后执行。所以在Page_Load事件中不能调用Page.IsValid,会报错。Page.IsValid要在button事件中调用。

       

    Page.IsValid:在服务器端指示前端的所有验证控件是否验证通过.如果前端有服务器端控件,就必须在后端判断这个属性.

    注意:验证控件在服务器端验证是在:Page_Load事件之后,更深层事件之前执行.比如你点击了一个按钮:在服务器端: 先执行Page_Load事件,再执行验证控件的验证方法,最后执行按钮的click事件

    Page.Validate();//如果要想在Page_Load事件用使用Page.IsValid,那么必须先执行这个方法让验证控件进行验证.

    if(Page.IsPostBack)

    {

      Page.Validate();

      bool b=Page.IsValid;

    }

    验证控件的一般属性:

    Display:

      none  不显示错误信息,只在验证汇总控件中提示。  

      static:不显示也占位   

      dynamic:不显示不占位 通过 display:none样式实现

    SetFocusOnError:当该验证控件没有通过验证时,自己获得焦点.

    注意:在我们的验证控件中,只有非空验证控件可以在用户不输入任何内容的情况下触发验证,其他验证控件只有在输入的内容为非空时才触发.

    汇总验证控件: ValidationSummary

    ShowSummary: 以文本的形式显示错误信息

    ShowMessageBox:以模式对话框的形式显示错误信息

    ErrorMessage: 是为汇总错误控件提供错误信息的

    Text: 才是真正的显示在被验证控件旁的错误信息

    CausesValidation :

    所有提交的按钮都有一个属性叫:CausesValidation 这个属性指示该按钮是否触发验证控件

     ValidationGroup:

    当需要点某个按钮,个别验证控件进行验证时,则需要设置按钮和验证控件的ValidationGroup

    2.当服务器控件处于模板中或者母版中,控件生成的html代码里的id就会发生变化,此时需要使用ClientID来获取生成的id,如果不处于母版或者模板中,一般不会发生变化。

    每一个服务器控件都有ClientID这个属性

    如:document.getElementById("<%=TextBox1.ClientID%>");

    3. 导航控件:  1.SiteMapPath  2.TreeView  3.Menu导航菜单    注意:导航控件一般用在母版中,不然每个页面都用导航控件很麻烦。

    1)SiteMapPath 面包屑导航 眉毛导航

       需要一个 站点地图为其提供数据 (web.sitemap)

    站点地图只能在网站根目录,并且名称只能是web.sitemap

    站点地图其实就是一个xml文件,只不站点地图对xml文件中的节点是有要求的:

    A)根节点必须是siteMap节点

    B)在根节点下有且只能有一个 siteMapNode 节点,这个节点代表我们网站的首页(主页)  这个节点有三个属性: url 指示首页地址 title: 文字显示  description: 鼠标放上去的提示文字

    C)在B节点下面,就可以根据网页的层次关系来一层一层的套siteMapNode,每一个siteMapNode 节点表示一个网页

    2)TreeView

    需要站点地图web.sitemap做数据源或者是xml文件做数据源

    3)Menu,数据源与TreeView一样,可以是站点地图,也可以是xml文件 

    4.三层架构工程搭建

    1.建立一个空的解决方案

    2.web层即表现层,在此解决方案下建立一个Asp.net web应用程序

    3.BLL,DAL,MODEL,在此解决方案下分别建立三个类库项目

    4.添加相互的引用。

    5.

    在GridView中用BouldField绑定的内容时,通过下面得数据
    GridView1.Rows[2].Cells[0].Text

    在GridView中用BouldField绑定的内容时,当GridView处于编辑状态时,BouldField此时是个TextBox文本框,如何获得TextBox中用户输入的内容:
    ((TextBox)GridView1.Rows[2].Cells[0].Controls[0]).Text;
    在GridView中,获得模板列中某个控件的值时,使用FindControl("")来得到这个控件

    当使用BouldField绑定数据,这一列如果被隐藏的话,那么隐藏的值无法获得到.一般ID使用BouldField绑定,但又不想让用户看到,怎么办?

    可以转成模板列

    如果在GridView控件中,一个按钮的CommandName为
    edit时,则会自动触发GridView编辑功能
    cancel时,则会自动触发GridView取消编辑功能
    delete时,则会自动触发GridView删除功能
    update时,则会自动触发GridView更新功能

    6.asp.net中常用的数据绑定控件,功能越强大,效率越低,Repeater效率最高,DataList次之,ListView效率最低

    1.ListView

    2.GridView

    3.DataList

    4.Repeater

      上面四个都是绑定List中的数据。

    5.DetaisView   用于展示一条数据的详细信息

    6.FormView也是拥有展示一条记录,只不过必须得用模板。

    7.  Response.Redirect("default.aspx?msg="+Serve.UrlEncode("成功"))//超链接传参中文的处理方式。

    8. Response.Redirect("admin/login.aspx");//当前文件夹下的admin文件夹里的login.aspx文件,是一个相对路径。

      Response.Redirect("~/admin/login.aspx");//网站根目录下admin文件夹里的login.aspx文件,是一个应用目录

      Response.Redirect("/admin/login.aspx");//网站根目录下admin文件夹里的login.aspx文件,是一个绝对目录。

      由于母板页和用户控件可以被其他任何目录中的普通页面使用,所以在写母板页和用户控件时,最好用绝对路径或应用路径来指明相关的文件路径.

         ~/只有服务器端控件才可以用,如果是html标签,就不能用,必须用下面的方法,转成~/才可以

        ResolveClientUrl   如果是非服务器控件,可以使用这个转换路径。

            ResolveUrl

     路径:/     ~/     ./     ../      ../../  

     ./和直接写文件名一样,.代表当前目录     ,./即当前目录下的文件

    即:<img src="./aa.jpg" />

      <img src="aa.jpg" /> 两种写法是等价的

    ../相对路径,当前页面所在的路径的上一级

    ../../ 当前页面所有的路径的上一级的上一级

    ~/  网站应用的根目录,即bin文件所在的目录,

      http://www.ccctv.com/abc/index.html

    红色:叫域名

    绿色:叫目录或虚拟目录

    蓝色:叫文件名

    /表示网站根目录,域名后就是网站根目录

    ~/表示应用目录  就是bin所在的目录.有可能是网站根目录,也有可能是虚拟目录,虚以目录可以做网站的应用目录

    如果是虚拟目录: ~//的意义就不一样了

     虚拟目录是IIS中绑定的网站对外发布的网址。

    10. 自动登录的实现:

    方法一:

    在用户表中,再添加一个字段,akey,当用户选中记住我时,生成一个Guid,放入当前登录用户后对应的数据库表记录中,并把这个akey存入用户cookie.

    当用户下次没登录访问时,我们可以从cookie中得到这个akey, 从数据库中查询得到这个akey对应的用户名和密码,自动把这个用户实体写入Sesssion["currUser]

    好处:安全性比较好,因为客户端没有任何用户资料.

    缺点:只能在一台电脑上实现记住我,不能让两台电脑同时记住我.

     

    方法二:

    我们就把用户名和密码写入到客户端.由于向客户端写资料了,所以我们要进行加密.

    1)随机产生一个两位的字母   s

    2)设用户的数据库中的密码为:p    

    3)向客户端存的密码为:     s+Md5(s+md5(p))

     

    把用户名和密码写入到客户端.

     

    下次再登录时,只需要读出cookie中的用户名和密码,然后根据用户名从数据库中得到该用户名所对应的密码,然后把这个密码按照上面的算法加密.然后对比是否相同,如果相同,则这个cookie是我们写入的.让用户自动登录.

    11.分页

    select * from books;//无行号

    select  (Row_number() over(order by id)) as 'rownumber' ,* from books;//Row_number()函数,加入行号,并按id排序,并取名为rownumber

    查出的数据第一列有个行号rownumber

    之后把查出来的数据作为一个结果集t:

      select  (Row_number() over(order by id)) as 'rownumber',* from books  as  t

      或者

      select  (Row_number() over(order by id)) as 'rownumber',* from books   t

    select * from

    (select  (Row_number() over(order by id)) as 'rownumber',* from books as t)  where rownumber between 21 and 30

    12.如何把第三方的控件加入到工具箱中:

    1)在工具栏上点右键,->选择项

    2)在.net组件中可以找已经注册的控件.如果没有注册,则可以通过浏览去查找.如ckeditor,加入bin目录下的的dll即可,以后就可以拖控件直接使用,同时把相应的样式等文件拷贝到根目录下

    Ckeditor不能上传图片,只能引用网上的图片,CkFinder可以上传图片,但是是收费的,ewebeditor是基于asp,支持上传图片,如果要上传图片,建议用ewebeditor

  • 相关阅读:
    react 给选中的li添加样式
    纯css实现移动端横向滑动列表
    从一个Git仓库转移到另外一个仓库
    create-react-app 创建react项目 多页面应用
    JetBrains出品,一款好用到爆的数据库工具
    gloox环境搭建并运行example(小白教程,有图版本)
    Dubbo服务注册原理
    永久解决 matplotlib 图例中文方块错误
    对称二叉树
    SpringBoot运行原理
  • 原文地址:https://www.cnblogs.com/lxboy2009/p/5814117.html
Copyright © 2020-2023  润新知