Asp.NET中用javascript【修改中……】

个人见解……

对于浏览器来说是不存在什么客户端控件和服务器端控件的,这是asp.net区分的,目的是为了更容易快捷的开发
服务器控件最终生成的仍然是普通的HTML,比如<asp:textbox>生成<input type="text">(可以在生成的页面中右键查看源文件比较)

可以这么理解,asp.net把你的代码翻译成了html呈现给浏览器,每次页面加载时都是生成html,你可以在页面上查看源文件,与你自己写的不一样的,
至于PostBack,是通过产生的Javascript实现的,服务器端控件postback后产生了许多的javascript代码,

示例:textbox的TextChanged事件

<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True" 
            ontextchanged
="TextBox1_TextChanged"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="First_Load" />


protected void TextBox1_TextChanged(object sender, EventArgs e)
    {
        Button1.Text 
= "Postback!";
    }

运行后,先查看查看源文件

右键-查看源文件

注意到textbox生成的html控件<input name="TextBox1" type="text">加了个onchange 事件,这个是Javascript代码,不是我们自己写的吧?

还有一段javascript代码

右键-查看源文件得到的Javscript
这个是text的onchange事件中调用的一个函数?(待续……)


asp.net中使用Javascript
使用 事实上Page.ClientScript.RegisterClientScriptBlock Page.ClientScript.RegisterStartupScript

使用 Page.ClientScript.RegisterClientScriptBlock生成的JavaScript 函数紧跟在 HTML 代码中开启元素 <form> 的后面。

而Page.ClientScript.RegisterStartupScript在闭合< /form>的前面

从字面上来理解,通过这两个方法可以让开发人员“有意”在生成的html中加入Javascript代码(postback产生的Javascript不是开发人员自己加的,

是asp.net为了“翻译准确”而加上去的)

你用asp.net写好一个文件,含有几次postback,这样的话每次的postback后生成的源文件是不一样的,不仅仅是“显示不同”

下面的代码显示了postback后会重新生成html文件,
aspx
Code
aspx.cs
Code

查看首次生成的页面源文件
<script type="text/javascript"> 
//<![CDATA[
function test(){alert('first_Load');return false;} //]]>
</script>
点击左侧Button,弹窗“first_Load”
点击右侧按钮,使页面产生postback,再次查看页面源文件,
<script type="text/javascript"> 
//<![CDATA[
function test(){alert('PostBack');return false;} //]]>
</script>



posted @ 2009-09-02 15:21  hsrzyn  阅读(741)  评论(0编辑  收藏  举报