关于 1 和 2 内容比较多, 整理了告诉你疑惑3
ASP.NET自带的客户端验证控件跟JSCRIPT验证HTML控件哪个好用
 a. 没有好用不好用之分,
 b. 只是自带的客户端验证控件拿来即可用,不用自己再coding,封装好的控件,可以复用
 c. 自带客户端验证控件可以满足很多情况,
 d. 但有些场景,还是只有我们自己写 js 才能满足需求, 或者开发自己 Validator
 e. 因此, 对于新手来说, 你就大胆使用 自带的客户端验证控件 吧
 f. 等你成大虾了,自然明白如何取舍,疑惑4
ASP.NET的SESSION对象生存周期在关闭浏览器时还存在?(那我如何做到网站关闭完用户就注销了...)
 a. 当你关闭浏览器的时候,可能还存在,也可能早就不存在了
 b. 你应该知道 Session 有一个过期时间(Timeout, 以分钟为单位)设置的,这个过期时间的意义是,距离你最后一次访问服务器的时间间隔,如果超过设置的这个时间间隔,那么服务器会自动丢掉与你这个浏览器的相关 Session
 c. 服务器根本无法知道你何时关闭浏览器,
 d. 因此,如果你手动点击浏览器那个按钮,服务断是无法注销的,因为没有办法通知他
 e. 所以,你就会看到通常我们登陆以后,会提供一个“注销”按钮给我们, 让我们手动的点击,通知服务器,我要执行注销了疑惑5
如何把JSCRIPT脚本绑定到DataGrid的EditItem列中的按钮上?这个需要使用绑定列, 如
// asp.net 2.0 直接使用 onclientclick 属性
<asp:datagrid ...
<columns>
<asp:templatecolumn>
<itemtemplate>
<asp:linkbutton onclientclick="if(!confirm('确定删除')) return false;" ...
....// 如果 是asp.net 1.x , 那么麻烦你 baidu 一下了,多得很Good Luck!

解决方案 »

  1.   

    疑惑1
       什么时候使用HTML控件,什么时候使用ASP.NET控件.   当控件需要跟数据绑定的时候,使用服务器控件,但最终还是要变成HTML控件的代码返回给客户端。服务器控件结合很多功能,你可以不需要再写那些重复来重复去的代码,好处很多。
    这个根据你的需要来使用,前提是你了解了服务器控件以后,你就知道什么时候该使用哪个。
    疑惑2
       HTML控件和ASP.NET控件的区别是什么.   一个直接返回HTML代码,一个是编译运行后返回HTML,但他们区别很大
       HTML控件没有状态,而ASP.NET控件是有状态的,而且它的事件是在服务器端运行。
       但最终结果你看客户浏览器的源代码发现,最终返回的还是HTML控件。呵呵 我说的不准确
    疑惑3
       ASP.NET自带的客户端验证控件跟JSCRIPT验证HTML控件哪个好用
       
       都好用,根据需要来使用,验证控件更方便一些。疑惑4
       ASP.NET的SESSION对象生存周期在关闭浏览器时还存在?(那我如何做到网站关闭完用户就注销了...)
      在session_end 事件里注销SESSION
    疑惑5
       如何把JSCRIPT脚本绑定到DataGrid的EditItem列中的按钮上?
      一般控件都有Attributes.Add 方法,例如
    GridView.Rows[0].Cells[0].Attributes.Add("onclick", "alert(111)");
    或者
    DataGrid.Items[0].Attributes.Add()因为老师教的怪怪的.想汇总下,可能很简单,还请不吝赐教
    老师讲一百遍你也未必能搞清楚思路,主要还是多用,多写程序
    写的多了,自然全都懂了。
      

  2.   

    不好意思,疑惑4写错了,我以为是关于session_end事件的问题呢疑惑4
       ASP.NET的SESSION对象生存周期在关闭浏览器时还存在?(那我如何做到网站关闭完用户就注销了...)       这个生命周期根据设置的时间长短,如果你非要关闭浏览器就注销SESSION,得用一些别的技术,例如ajax.net ,一般情况下不用管它,它自己会注销的
      

  3.   

    强调一下Session的运行机制。你在你的页面运行下面的代码:protected void Page_Load(object sender, EventArgs e)
    {
        object x;
        if (!this.IsPostBack)
        {
            x = "adfadfa";
            Session["obj"] = x;
        }
        x = Session["obj"];
        Response.Write(string.Format(
            "SessionID 是 {0},Session的HashCode是{1},obj的HashCode是{2}。",
            Session.SessionID, Session.GetHashCode().ToString(), x.GetHashCode().ToString()));
    }你可以看到测试结果,同一个会话、取得同样的对象(x),但是每一次刷新的时候Session的HashCode是不同的,也就是说Session每一次都重新创建新的对象,而不是一个稳定不变的对象。就像页面page每一次都创建新的对象,只是由于有状态机制,于是初学者会误认为page总是同一个对象一个,Session被不关心较深技术的人说成是同一个对象。其实,页面的Session属性以及HttpContext.Current.Session全都是在每一次后台处理页面时新建的。想想,为什么你会以为页面处理中你总是访问同一个Session对象呢?这往往会让你重新审视你对系统运行机制的理解到底能否总是清楚地使用好。
      

  4.   

    对于疑惑1,2的理解
       什么时候使用HTML控件,什么时候使用ASP.NET控件.
       是不是说,使用HTML控件解析效率会比ASP.NET强.
       那么对于页面里的文本框,按钮这样的东西,如果没有特殊要求,只是用来提交或者获取值,是不是就用HTML控件就好?
    对于疑惑3的理解
       因为客户端控件也是JS,所以在刚开始完全可以放心的时候 客户端验证控件
    对于疑惑4的理解
       timeout指的不是SESSION过期时间,而是指跟最后一次访问站点的时间间隔是吗?
       比如TIMEOUT = 20 那么并不是我所理解的,系统20秒就清掉你的SESSION
    对于疑惑5的理解
       搞清楚了
      

  5.   

    《programming asp.net》上有很完美的答案~~
      

  6.   

    服务器控件的概念也简单描述一下:如果你在设计代码中,在html对象上写runat=server,或者使用vs的“做为服务器控件执行”,那么这就被asp.net处理为html控件。<asp:TextBox ...></asp:TextBox>之类的在asp.net已经注册的控件,包括你在顶部使用<%@ Register ....>注册过的html对象,被asp.net处理为web控件或者用户控件。剩下的,普通的html对象,被asp.net当作普通的字符串包装到LiteralControl控件中。因此,以下:<asp:ScriptManager ID="ScriptManager1" runat="server" />
    请输入姓名:
    <input type="text" /><br />
    <span>请输入年龄</span><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <hr />
    验证码:
    <img src="http://www.1234.com/images/a.jpg" id="theImage" runat="server" />
    <asp:Button ID="Button1" runat="server" Text="Button" />
    应该看成6个服务器控件:1. 一个ScriptManager 类型的控件。
    2. 一个LiteralControl控件,它的Text属性是:“请输入姓名:<input type="text" /><br />
    <span>请输入年龄</span>”。
    3. 一个TextBox控件。这是一个web控件。
    4. 又一个LiteralControl控件,它的Text属性是:“<hr />验证码:”。
    5. 一个 htmlImage 控件。这是一个 html 控件。
    6. 一个 Button控件。这是一个web控件。上面1、2、4既不是html控件,也不是web控件,也不是用户控件,就是普通的服务器控件(所有父类)。同时有人说,写“<input type="text" />”这种跟服务器控件无关。其实,你写在aspx或者ascx上任何东西都跟服务器控件有关,只是被解析成的服务器控件类型不同。
      

  7.   

    疑惑1
       什么时候使用HTML控件,什么时候使用ASP.NET控件.
    答:asp.net控件一定是服务器端运行的,支持的服务器端属性也多一些。html控件可以设置为服务器端运行,但一般仅用于客户端执行,发送数据到服务器端需要额外处理。
    评:废话。疑惑2
       HTML控件和ASP.NET控件的区别是什么.
    答:参考疑问1。疑惑3
       ASP.NET自带的客户端验证控件跟JSCRIPT验证HTML控件哪个好用
    答:都好用,看场合和个人喜好。
    评:又是废话。疑惑4
       ASP.NET的SESSION对象生存周期在关闭浏览器时还存在?(那我如何做到网站关闭完用户就注销了...)
    答:不会存在了。疑惑5
       如何把JSCRIPT脚本绑定到DataGrid的EditItem列中的按钮上?
    答:用Attibutes属性加入。