首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

asp.net生成xhtml的事件驱动原理解决方法

2013-10-14 
asp.net生成xhtml的事件驱动原理WebForm.aspx代码:%@ Page LanguageC# AutoEventWireuptrue CodeBe

asp.net生成xhtml的事件驱动原理
WebForm.aspx代码:

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

<!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>
            <asp:Label ID="Label1" runat="server" Text="宝贝儿姓名:"></asp:Label>
            <asp:TextBox ID="tbName" runat="server"></asp:TextBox>
            <asp:Button ID="btHello" runat="server" Text="问候一下" OnClick="btHello_Click" />
        </div>
    </form>
</body>
</html>


WebForm1.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.Text;

namespace WebApplication1
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btHello_Click(object sender, EventArgs e)
        {
            String str;
            StringBuilder StrScript = new StringBuilder();
            StrScript.Append("<script language=javascript>");
            if(this.tbName.Text != ""){
                str=this.tbName.Text.Trim() + ",你好!";
            }else{
                str="姓名不能为空";
            }

            StrScript.Append("alert('" + str + "');");
            StrScript.Append("</script>");
            RegisterStartupScript("MessageBox", StrScript.ToString());
        }
    }
}


执行后页面代码:
<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>

</title></head>
<body>
    <form method="post" action="WebForm1.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="nt/N01/gSpnPPbmQT8jzelpFxgXESXcqwmzQSbOCl7+yPVoTPl06+3BPf/4cVUb97mIZalrN+6u4V9gBou3pxGHprpwSPwdYrYFO5PLiR5M=" />
</div>

<div class="aspNetHidden">

<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="xGF80Sv6EYOZg6IM3vlwEHP7wW8h6kCtXfDyyG9oOhSQN6pV+iPrl7wIyY41GuyD20461qF9G0+w6EWu7Dx789A+U4Gx5/8SRrh4wo2Jda5PiAfycbYrT2MV3dz+d0gN4z643DQCTTBC01q7NgZXFw==" />
</div>
        <div>
            <span id="Label1">宝贝儿姓名:</span>
            <input name="tbName" type="text" id="tbName" />
            <input type="submit" name="btHello" value="问候一下" id="btHello" />
        </div>
    </form>
</body>
</html>

4个问题:
1,据我所知html时间驱动都是html dom驱动的,比如在input里添加onClick的事件javascript函数,那这个申城的时间是如何执行事件的?因为在btHello上并没有绑定事件.也没有用javascript进行后期绑定,如何点击按钮就能驱动事件呢?原理是什么?
2,以下两个是什么玩意,自动生成的?作用是什么?能否不生成?
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="nt/N01/gSpnPPbmQT8jzelpFxgXESXcqwmzQSbOCl7+yPVoTPl06+3BPf/4cVUb97mIZalrN+6u4V9gBou3pxGHprpwSPwdYrYFO5PLiR5M=" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="xGF80Sv6EYOZg6IM3vlwEHP7wW8h6kCtXfDyyG9oOhSQN6pV+iPrl7wIyY41GuyD20461qF9G0+w6EWu7Dx789A+U4Gx5/8SRrh4wo2Jda5PiAfycbYrT2MV3dz+d0gN4z643DQCTTBC01q7NgZXFw==" />


3,RegisterStartupScript已过时,现在应该用什么方法替换,我看的教程有点老
4,有什么新的教程适合学asp.net用c#做后台语言,有vb.net变成基础,对c#的语法基本了解,最好是在线的.
每个问题10分
[解决办法]
因为在btHello上并没有绑定事件
OnClick="btHello_Click" 这就是

ASP.NET会根据aspx页面动态编译一个程序集,包含了上面的事件绑定


VIEWSTATE跟踪了客户端的状态,正因为这样,服务器才可以获知诸如TextChanged SelectionChanged等等事件。


ClientScriptManager.RegisterStartupScript



建议买书学习。网上的教程虽说不要钱,但是支离破碎,浪费时间。

[解决办法]
1. 你所知的有欠缺。对于web form来说,html标记
<input type=submit ...>
这是不需要写上什么“dom事件”就可以自动回发——提交这个<form />的。而提交时,在post参数中会有
&btHello=问候一下
这样的数据。asp.net处理post数据时,看到btHello是一个Button控件,就会随后执行它的 Click。

2. 这都是非常关键的asp.net技术,它让原本无状态的web页面变得像winform窗口一样自动保持页面上各处的状态数据,同时又防止客户端脚本篡改页面状态数据。

3. 我使用 ClientScriptManager.Register......

4. 如果你是问“21天学习asp.net”之类的书,我没有办法推荐。我们看的都是那种需要学习至少一年、进行控件开发、比较深入的书。只有一开始作为一个纯业余的爱好者,才先看一本速成书来了解一下。

热点排行