初学.Net,问题可能很白痴,希望大家来帮忙!问题是response.aspx中的button控件如何可以点击后触发.cs文件里的btnOK_Click事件。点击按钮没有起作用。还有一个问题就是form的action为什么改不掉呢,修改控件里的action属性也改不掉。没搞明白,代码如下:
这是response.aspx中的控件代码:
<div>
<form id="Form1" method="post" runat="server" action="~/chapter2/welcom.aspx">
姓名:<asp:TextBox ID="txtName" runat="server"></asp:TextBox>
<br />
性别:<asp:RadioButton ID="rbtSex1" runat="server" Checked="True" Text="男" GroupName="sex" />
<asp:RadioButton ID="rbtSex2" runat="server" Text="女" GroupName="sex" />
<br />
<asp:Button ID="btnOK" runat="server" Text="确定"/>
</form>
</div>
这是cs文件里的代码
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
namespace WebApplication1.chapter2
{
public partial class response : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("<h1>在页面中输出数据</h1>");
char c = 'a';//定义一个字符变量
string s = "Hello World!";//定义一个字符串变量
char[] cArray={'H','e','l','l','o',',','W','o','r','l','d'};//定义一个字符数组
Page p = new Page();//定义一个Page对象
Response.Write("输出单个字符");
Response.Write(c);
Response.Write("<br />");
Response.Write("输出一个字符串"+s+"<br />");
Response.Write("输出字符数组");
Response.Write(cArray, 0, cArray.Length);
Response.Write("<br />");
Response.Write("输出一个对象");
Response.Write(p);
Response.Write("<br />");
Response.Write("输出一个文件");
Response.Write(@"D:\dotnet\WebApplication1\WebApplication1\chapter2\WriteFile.txt");//读取不出来
Response.Write("<h1>页面跳转并传递参数</h1>");
}
protected void btnOK_Click(object sender, EventArgs e)
{
string name = this.txtName.Text;
string sex = "先生";
if (this.rbtSex2.Checked)
sex = "女士";
Response.Redirect("welcom.aspx");
}
}
}
改掉form action的指向这个问题说简单只需要把<asp:Button ID="btnOK" runat="server" Text="确定"/>改成<asp:Button ID="btnOK" runat="server" Text="确定" PostBackUrl="~/chapter2/welcom.aspx" />即可,如果说难这个你可以参照ASP.NET 2.0中的跨页面提交一文。
当然如果你只需要实现功能,那下面代码可以解决你的问题:Page.RegisterStartupScript("sub","<script>document.forms[0].action = '~/chapter2/welcom.aspx;document.forms[0].__VIEWSTATE.name = 'NOVIEWSTATE';document.forms[0].submit();</script>");该代码写在Page_load中。注意document.forms[0].__VIEWSTATE.name = 'NOVIEWSTATE';的写法,不然ASP.NET会有权限上的报错。谨记。
另外关于你问的 “问题是response.aspx中的button控件如何可以点击后触发.cs文件里的btnOK_Click事件” 这个问题,这个要说简单这是Asp.Net实现机制来解决的(浏览器激发javascript脚本把相关事件回发的IIS服务器,IIS服务器把解析aspnet_isapi去处理),你可以不去深究该问题,如果你需要深究的话,那建议你关注Asp.Net的MSDN帮助.
1. <asp:Button ID="btnOK" runat="server" Text="确定" OnClick="btnOK_Click"/> 颜色部分是触发事件的声明;
2. form里的post和action都不需要声明,页面自动”回发(postback)“,即传回自身页面处理;只有这样,后台事件才能触发;
3. 如果声明了action,页面就会跳转到相应的其他页面
<form id="Form1" method="post" runat="server" action="chapter2/welcom.aspx">
注意:不要使用”~“,form只是一个标记了runat="server"的html控件,还不是像<asp:button >这样的服务器控件,不能这样解析。
最后,要给分呀!没分就没人来了,呵呵。
<asp:Button ID="btnOK" runat="server" Text="确定" OnClick="btnOK_Click" />
问题:你没有在你页面控件上绑定该控件要触发的事件,在.cs文件中写了,不绑定一样触发不了啊。只是触发一次回传而已。
还有就是你的page_load中写的是什么意思?知识要测试在页面输出文字?