各位大哥:
我打开 visual c# projects asp.net web application 
然后 单击  Html  得到 下面的语句:
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication6.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <html>
  <head>
    <title>WebForm1</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name=vs_defaultClientScript content="JavaScript">
    <meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
  </head>
  <body MS_POSITIONING="GridLayout">

    <form id="Form1" method="post" runat="server">   </form>

  </body>
</html>
现在 我在里面加上<%
   Response.Write("<p>Hello")
 %>得到<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication6.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <html>
  <head>
    <title>WebForm1</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name=vs_defaultClientScript content="JavaScript">
    <meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
  </head>
  <body MS_POSITIONING="GridLayout">

    <form id="Form1" method="post" runat="server">
     <%
       Response.Write("<p>Hello")
      %>    </form>

  </body>
</html>运行时出错误!
请教各位大哥,为什么加上<%
  Response.Write("<p>Hello")
%>就不行呢?
还有,
<form id="Form1" method="post" runat="server">
     
</form>是什么?为什么没有 
<form id="Form1" method="post" runat="server">
     
</form>
也能运行呢?
谢谢!

解决方案 »

  1.   

    语句后面加上分号Response.Write("<p>Hello");
    页面上没有服务器控件,不需要PostBack的话Form有没有无所谓
      

  2.   

    同上,最好不要写代码在页面里,写到CS文件中,编译时就能提示出错了。如果你的页面上有服务器控件,就一定要放在RUNAT=SERVER的FORM里面。
      

  3.   

    完全同意fancyf(凡瑞) 的说法!
      

  4.   

    非常感谢 fancyf 大哥和 smallyear大哥:TO smallyear大哥:您说 “最好不要写代码在页面里,写到CS文件中”您说的  CS文件,是不是 webform1.aspx.cs可是我把<%
      Response.Write("<p>Hello")
    %>放到
    private void Page_Load(object sender, System.EventArgs e)
    有错误:
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;namespace WebApplication6
    {
    /// <summary>
    /// Summary description for WebForm1.
    /// </summary>
    public class WebForm1 : System.Web.UI.Page
    {
    private void Page_Load(object sender, System.EventArgs e)
    {
        <% 
                            Response.Write("<p>Hello");
                            %>
    } #region Web Form Designer generated code
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: This call is required by the ASP.NET Web Form Designer.
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    private void InitializeComponent()
    {    
    this.Load += new System.EventHandler(this.Page_Load);
    }
    #endregion
    }
    }fancyf 大哥, smallyear大哥:
    我应该怎样修改啊?谢谢!如果你的页面上有服务器控件,就一定要放在RUNAT=SERVER的FORM里面是把什么一定要放到 RUNAT=SERVER的FORM里面啊?
    谢谢!
      

  5.   

    ancyf 大哥和 smallyear大哥;
    我把
    <% 
    %>去掉就可以了,为什么这里面不能有 
    <% 
    %>而 webform1.aspx 就需要呢?
    还有ancyf 大哥 说“页面上没有服务器控件,不需要PostBack的话Form有没有无所谓”
    是什么意思啊?smallyear大哥 说“如果你的页面上有服务器控件,就一定要放在RUNAT=SERVER的FORM里面”
    是把什么一定要放到 RUNAT=SERVER的FORM里面啊?
    谢谢!
      

  6.   

    写在后台就不要写<%%>这两个符号了.把那两个符号去掉
      

  7.   

    ancyf 大哥 说“页面上没有服务器控件,不需要PostBack的话Form有没有无所谓”
    是什么意思啊?
    ========
    PostBack就是发回服务端啊。如果不要发回的话,不用也可以PostBack你可以参看相关帮助“SDK/MSDN”----------------------------smallyear大哥 说“如果你的页面上有服务器控件,就一定要放在RUNAT=SERVER的FORM里面”
    是把什么一定要放到 RUNAT=SERVER的FORM里面啊?
    =========
    不一定的啦!
      

  8.   

    呵呵.
    建议楼主先看以下asp.net方面的教程.
      

  9.   

    <%
      Response.Write("<p>Hello")
    %>
    可以写到CodeBehind中,此时写成Response.Write("<p>Hello")即可.
    另外,一般服务器端控件需要传值和引用的时候得用Form等标记,如果你没有在Form中包含需要处理事务或响应事件的服务器端控件或Frame,不要也可以.
      

  10.   

    感谢各位大哥的回答
    感谢 renyu732 大哥的忠告
     hchxxzx 大哥说:“写在后台就不要写<%%>这两个符号了.把那两个符号去掉”请教 hchxxzx 大哥 和各位大哥 ,前台和后台是以什么标准来区分的啊?还有   webform1.aspx ,就是前台?而 webform1.aspx.cs 就是后台是吗?谢谢各位大哥
      

  11.   

    zeusvenus 大哥:
    可以写到CodeBehind中,此时写成Response.Write("<p>Hello")即可.
    另外,一般服务器端控件需要传值和引用的时候得用Form等标记,如果你没有在Form中包含需要处理事务或响应事件的服务器端控件或Frame,不要也可以.
    CodeBehind 是什么文件啊?
    我怎么找不到啊,还有 Frame ,我也没找到啊请 zeusvenus 大哥 和各位大哥再详细说一下啊~~谢谢!
      

  12.   

    CodeBehind不是文件,是将前台和后台分离开来的一种设计方法,像一般以显示功能为主的可以放在ASPX的HTML前台中,而在ASPX.CS的CSHARP代码文件中写的与服务器或者用户交互的部分通俗点叫后台。像你的这句话在HTML中写要加<% %>内,是告诉浏览器这句话应该以脚本方式解释。
    Frame是指框架。
      

  13.   

    zeusvenus大哥:
    像浏览网页,申请帐号,输入用户号 和 密码 然后点击提交 
    因为 用户号 和 密码 是需要提交的数据库中的,这样的代码 就是后台代码
    如果点击一个安纽,就出现某副图片,而这副图片不需要从后台数据库中读出这样的 代码就是前台。是吗?zeusvenus大哥!
      

  14.   

    zeusvenus大哥:
    像浏览网页,申请帐号,输入用户号 和 密码 然后点击提交 
    因为 用户号 和 密码 是需要提交的数据库中的,这样的代码 就是后台代码
    -------------
    一般用户能看到的只是页面端的东西如文本框,按钮之类的.但是,验证用户名及密码是不是正确是写在后台代码里的,一般用户是看不到的.
    而如果用到三层的话.
    UI层:页面,如文本框,提交/注册按钮
    业务逻辑层:判断用户输入的数据是不是有效,如email等的格式是不是正确
    数据层:用来与数据库的连接,进而判断用户输入数据的正确性.
    如果点击一个安纽,就出现某副图片,而这副图片不需要从后台数据库中读出这样的 代码就是前台。
    ---------------
    一般的网站如果图片量很多,如新闻之类的要经常更新的内容也是从数据库里读出来的(包括图片文件等也是).
    而所谓的前台就是三层中的UI层,一般的浏览者可以直接看到的内容.比如输入URL后,显示出来的内容.
      

  15.   

    renyu732  大哥
    您可牛啊~~谢谢 renyu732  和所有的大哥!