这是一个简单的在线测试页面,现在都写在一起了,现在要分离成ASPX和CS两个文件,如何分呢? 
我现在遇到两个问题:一是提交按钮的响应,有没有可能一边在CS里响应,一边还可以用From响应?
还有一个就是动态生成的单选按钮的值传递。这些按钮被选了后,会有value,如果用CS,这些值怎么传到Score.aspx中。<Script runat="server"> 
string Lesson; 
string No; 
string Name; 
OleDbDataReader dr; 
void Page_Load(Object Src, EventArgs E) {  
Lesson = Request["Lesson"]; 
No =  Request["No"]; 
Name = Request["Name"]; 
string SQL = "Select * From " + Lesson; 
OleDbConnection Conn; 
Conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+ 
"Data Source="+Server.MapPath("test.mdb")); 
Conn.Open(); 
OleDbCommand Comm = new OleDbCommand(SQL,Conn); 
dr = Comm.ExecuteReader(); 

</Script> 
<HTML> 
<BODY BGCOLOR=BEIGE> 
<CENTER> 
<H1> <FONT COLOR=#6699DD>在线考试系统 </FONT> </H1> 
</CENTER> 
<H2>考试科目 --  <%=Lesson%> <HR> </H2> 
<FORM Action="Score.aspx" Method="GET"> 
<INPUT Type="Hidden" Name="Lesson" Value= <%=Lesson%>> 
<INPUT Type="Hidden" Name="No" Value= <%=No%>> 
<INPUT Type="Hidden" Name="Name" Value= <%=Name%>> 
<% 
string TestType = ""; 
while (dr.Read()){ 
Response.Write(" <B>" + dr["题号"].ToString() + "."  
+ Server.HtmlEncode(dr["题目"].ToString())  
+ dr["类型"].ToString() + ":" + dr["分数"].ToString() + "分) </B>"); 
Response.Write(" <div>"); 
for (int i=1; i <5; i++) { 
if (dr["类型"].ToString() == "单选") { 
TestType = "Radio"; 

else { 
TestType = "CheckBox"; 

Response.Write(" <INPUT Type=" + TestType  
+ " Name=No" + dr["题号"].ToString() 
+ " Value=" + i +">"  
+ Server.HtmlEncode(dr["选项" + i].ToString()) + " <BR>"); 

Response.Write(" </div>"); 

%> 
<INPUT Type=Submit Value="  交 卷  "> 
</FORM> <HR> </BODY> 
</HTML> 

解决方案 »

  1.   

    一是提交按钮的响应,有没有可能一边在CS里响应,一边还可以用From响应?
    可以在cs里处理完响应后,再调用前台的JS来处理还有一个就是动态生成的单选按钮的值传递。这些按钮被选了后,会有value,如果用CS,这些值怎么传到Score.aspx中。
    用Js可以取到
      

  2.   

    将这些写到CS文件中就可以了
    string Lesson; 
    string No; 
    string Name; 
    OleDbDataReader dr; 
    void Page_Load(Object Src, EventArgs E) {  
    Lesson = Request["Lesson"]; 
    No =  Request["No"]; 
    Name = Request["Name"]; 
    string SQL = "Select * From " + Lesson; 
    OleDbConnection Conn; 
    Conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+ 
    "Data Source="+Server.MapPath("test.mdb")); 
    Conn.Open(); 
    OleDbCommand Comm = new OleDbCommand(SQL,Conn); 
    dr = Comm.ExecuteReader(); 
    }  string TestType = ""; 
    while (dr.Read()){ 
    Response.Write("  <B>" + dr["题号"].ToString() + "."  
    + Server.HtmlEncode(dr["题目"].ToString())  
    + dr["类型"].ToString() + ":" + dr["分数"].ToString() + "分)  </B>"); 
    Response.Write("  <div>"); 
    for (int i=1; i  <5; i++) { 
    if (dr["类型"].ToString() == "单选") { 
    TestType = "Radio"; 

    else { 
    TestType = "CheckBox"; 

    Response.Write("  <INPUT Type=" + TestType  
    + " Name=No" + dr["题号"].ToString() 
    + " Value=" + i +">"  
    + Server.HtmlEncode(dr["选项" + i].ToString()) + "  <BR>"); 

    Response.Write("  </div>"); 
    }  写在Page_Load里面
      

  3.   

    Default.aspx文件<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %><HTML>  
    <BODY BGCOLOR=BEIGE>  
    <CENTER>  
    <H1>  <FONT COLOR=#6699DD>在线考试系统  </FONT>  </H1>  
    </CENTER>  
    <H2>考试科目 --   <%=Lesson%>  <HR>  </H2>  
    <FORM Action="Score.aspx" Method="GET">  
    <INPUT Type="Hidden" Name="Lesson" Value=  <%=Lesson%>>  
    <INPUT Type="Hidden" Name="No" Value=  <%=No%>>  
    <INPUT Type="Hidden" Name="Name" Value=  <%=Name%>>  
    <%  
    string TestType = "";  
    while (dr.Read()){  
    Response.Write("  <B>" + dr["题号"].ToString() + "."   
    + Server.HtmlEncode(dr["题目"].ToString())   
    + dr["类型"].ToString() + ":" + dr["分数"].ToString() + "分)  </B>");  
    Response.Write("  <div>");  
    for (int i=1; i  <5; i++) {  
    if (dr["类型"].ToString() == "单选") {  
    TestType = "Radio";  
    }  
    else {  
    TestType = "CheckBox";  
    }  
    Response.Write("  <INPUT Type=" + TestType   
    + " Name=No" + dr["题号"].ToString()  
    + " Value=" + i +">"   
    + Server.HtmlEncode(dr["选项" + i].ToString()) + "  <BR>");  
    }  
    Response.Write("  </div>");  
    }  
    %>  
    <INPUT Type=Submit Value="  交 卷  ">  
    </FORM>  <HR>  </BODY>  
    </HTML>  
    Default.aspx.cs文件:
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class UserControl_recommendation :DataControlBase .DataControl 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
           string Lesson;  
    string No;  
    string Name;  
    OleDbDataReader dr;  
    void Page_Load(Object Src, EventArgs E) {   
    Lesson = Request["Lesson"];  
    No =  Request["No"];  
    Name = Request["Name"];  
    string SQL = "Select * From " + Lesson;  
    OleDbConnection Conn;  
    Conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+  
    "Data Source="+Server.MapPath("test.mdb"));  
    Conn.Open();  
    OleDbCommand Comm = new OleDbCommand(SQL,Conn);  
    dr = Comm.ExecuteReader();  
        }
    }
      

  4.   

    一是提交按钮的响应,有没有可能一边在CS里响应,一边还可以用From响应? 
    你可以说下你的需求是怎么样的,你其实可以把东西都放到From里面或者是CS里面处理还有一个就是动态生成的单选按钮的值传递。这些按钮被选了后,会有value,如果用CS,这些值怎么传到Score.aspx中
    你注意看这段代码:
    Response.Write("  <INPUT Type=" + TestType  
    + " Name=No" + dr["题号"].ToString() 
    + " Value=" + i +">"  
    + Server.HtmlEncode(dr["选项" + i].ToString()) + "  <BR>"); 
    按钮生成后会有这样的ID:Name=No1,Name=No2 ...如果你是用Submit提交的话,可以在From里面获取值。
    你也可以用JS来获取这些Radio或者CheckBox的值
      

  5.   

    谢谢2楼,但是这样不行,
            <INPUT Type="Hidden" Name="Lesson" Value=<%=Lesson%>>
    <INPUT Type="Hidden" Name="No" Value=<%=No%>>
    <INPUT Type="Hidden" Name="Name" Value=<%=Name%>>这部分会出错。
    3楼 adoxcy :不能把判断部分放在CS中吗?
      

  6.   

    按钮生成后会有这样的ID:Name=No1,Name=No2 ...如果你是用Submit提交的话,可以在From里面获取值。 
    你也可以用JS来获取这些Radio或者CheckBox的值 
    ————————————————————————————
    谢谢!flamelp :是的,这正是第一个问题,我分离成CS后,好象HTML中的from已没有任何反应了,单击“交卷”按钮后它不会跳到Action指定的页面上去,就是头痛这个问题,原来由<FROM>传值的功能,现在没有了,怎么把值传过去?
      

  7.   

    是我弄混了,<from>仍然可以提交:<FORM Action="Score.aspx" Method="GET"><INPUT Type=Submit Value="  交 卷  ">
    </FORM>但是我想提交的同时,想一些参数传过去,原文是这样的:
    <INPUT Type="Hidden" Name="Lesson" Value=<%=Lesson%>>
    <INPUT Type="Hidden" Name="No" Value=<%=No%>>
    <INPUT Type="Hidden" Name="Name" Value=<%=Name%>>
    现在加了CS文件了,Value=<%=Lesson%>>这部分会出错,这些值如何传过去?
      

  8.   

    你到第二页request一下试试看。
      

  9.   

    在一步步前进了,现在剩下的问题是:
    Response.Write("   <INPUT Type=" + TestType    
    + " Name=No" + dr["题号"].ToString()   
    + " Value=" + i +">"    
    CS中生成的控件,不会出现在<from></from>中
    所以没有办法传值,应该怎么弄到<from></from>中?生活真难啊,这个问题从早上来现在,有十个小时了,眼看夜慕降临,明天又到了,三天两头被这么逼,有时候都不想活了。
      

  10.   

    现在要分离成ASPX和CS两个文件,如何分呢?  --------
    你重新用VS2003/2005建一个页面  把在<Script runat="server">  
    </script>中转化到.CS文件中