用记事本建立一个.aspx文件:
------------------
<%@ Page language="C#" runat="server" %>
<%
Response.Write("OK");
%>
------------------
执行没有任何问题,正常输出:“OK”
但改成下面形式:<%@ Page language="C#" %>
<script runat="Server" >
Response.Write("OK");
</script>则出现错误:CS1519: 类、结构或接口成员声明中的标记“(”无效
--------------------------------再改成:
<%@ Page language="C#" runat="Server" %>
<script >
Response.Write("OK");
</script>则没有错误,但输出空白页面,看不到“OK”字样。
谁解释得清其中原因?
------------------
<%@ Page language="C#" runat="server" %>
<%
Response.Write("OK");
%>
------------------
执行没有任何问题,正常输出:“OK”
但改成下面形式:<%@ Page language="C#" %>
<script runat="Server" >
Response.Write("OK");
</script>则出现错误:CS1519: 类、结构或接口成员声明中的标记“(”无效
--------------------------------再改成:
<%@ Page language="C#" runat="Server" %>
<script >
Response.Write("OK");
</script>则没有错误,但输出空白页面,看不到“OK”字样。
谁解释得清其中原因?
<script runat="server" type="text/C#">
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("OK");
}
</script>
<script>
document.write("OK");
</script>
这个标记应是客户端的脚本。<%%>这个标记应是服务器端执行的脚本。而Response对象也是服务端执行的对象,写到客户端脚本中只能是对象未定义了。应该使用:window.alert()或window.confirm之类的方法。
alert("OK");
</script>
Response.Write("OK");
%>
与<%= "OK" %>效果一样,打印服务器端数据
<script runat="Server" >
Response.Write("OK");
</script>
应该写在事件处理函数中,如:
<script runat="server">
private void Page_Load(object sender, EventArgs e)
{
Response.Write("OK");
}
</script>
<script>
Response.Write("OK");
</script>
与第一种情况一样. 这里<script>是客户端标签,服务器不认识
这个标记应是客户端的脚本。
<%%>在服务器端执行,纯是asp语言,现在.net中几乎是不用了。
Response是在有Request即请求后才存在的对象,只能在后台代码用,
页面直接调用的时候,会报空引用一场吧
<script language="VBscript" runat="server">
Response.write("OK")
</script>将这段代码保存为老的asp文件,那么什么问题都没有;但如果改成<script language="C#" runat="server">
Response.Write("OK");
</script>并保存为.aspx文件,则立马出错!======================================================================
原因在这里:ASP.NET 中,<script language="C#" runat="server">
...
<script>被称为“代码声明块”,“代码声明块”中是不允许加入独立的代码,而只能在其中定义函数(准确地说是:方法),然后供<%...%>中的独立代码调用。而在老的ASP中是没有这样的限制的!