1.
最近看asp.net,感觉和html,css等web前端技术有点混淆了。 <asp: name id='id' runat='server'> 这个没问题,创建web服务器控件。 这里的id,和CSS的ID概念完全不是一回事。 ASP.NET本身就是html组成吧 区别就是 .html .aspx后缀。 但是在传统的html中 , 我们可以写 javascript 和vbscript ,如<script type='text/javscript'> </script>不知道写成<script type='text/javscript' runat='server'> </script> 会怎么样? ,而在asp.net里,毋庸置疑,我们写成 <script runat="server">
Sub Page_Load
lbl1.Text="The date and time is " & now()
End Sub
</script>, 我知道这是ASP.NET的page_load的event handler,但是你说,这个算javascript 还是vbscript ?
2.
用vs.net,写ASP.NET的时候,我添加web控件后,在源端,我们可以看到控件的代码,也可以添加script脚本,如<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /> ,但问题是: Button1_Click 我可以写在aspx文件的script,作为子例程,也可以像winForm那样,双击该button定义一个事件,如
protected void Button1_Click(object sender, EventArgs e)
{
} 这两者有啥区别?
1.很明显不是javascript,因为它运行在服务器端。
2.你需要知道,asp.net的本质其实就是将javascript技术加以包装而成,其aspx文件所生成的发送到客户端的代码只包括html,css,javascript等,不包含任何服务器脚本代码。
当你在页面中加入web 控件你添加了一个onclick事件,在你生成的html代码里可以看到
<input type="submit" name="Button1" value="Button" />
并不存在该事件的定义。那么他是如何工作的呢?
首先通过form表单的post方法提交表单到服务器端(看看httprequest),然后在后台我们可以通过
Request.Form集合里看到这个button(只有 button与imagebutton可以看到因为他们实现了IpostBackEventHandler接口,具体可看这篇文章-http://www.cnblogs.com/yangtongnet/archive/2011/02/12/1952875.html)
这里asp.net会帮我们查看,发现产生回发的控件是这个button一而且注册了button1_click 事件,那么他就会执行
protected void Button1_Click(object sender, EventArgs e)
{
} 这个方法
这就是事件的用处。
楼上基本上都说了,至于事件写在.aspx里还是.aspx.cs里其实都是一样的,asp.net已经把传统的html进行了包装,在Web服务器接收到.aspx页面时会进行处理...
<script type='text/javscript' runat='server'> 这句话不会报错,但是type 和runat 取其一就可以。 同意么
@albert.jin:
当然会报错,<script type='text/javscript'>这里是包含客户端js代码片段(因为type申明了文件MIME类型),而<script runat='server'>是包含服务器端代码交由服务器端去处理的,2者是有区别的...
<script type='text/javscript' runat='server'> 这种的话貌似是不支持的...