首页 新闻 会员 周边

.Net Button控件调用方法问题

0
悬赏园豆:10 [已解决问题] 解决于 2010-03-11 11:35

初学.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");
       
        }
    }
}

东北小铁人的主页 东北小铁人 | 初学一级 | 园豆:180
提问于:2010-03-09 00:27
< >
分享
最佳答案
0

改掉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帮助.

收获园豆:3
西越泽 | 专家六级 |园豆:10775 | 2010-03-09 09:39
其他回答(2)
0

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   >这样的服务器控件,不能这样解析。

 

最后,要给分呀!没分就没人来了,呵呵。

收获园豆:4
自由飞 | 园豆:174 (初学一级) | 2010-03-09 09:21
0

   <asp:Button ID="btnOK" runat="server" Text="确定" OnClick="btnOK_Click" />

 问题:你没有在你页面控件上绑定该控件要触发的事件,在.cs文件中写了,不绑定一样触发不了啊。只是触发一次回传而已。

还有就是你的page_load中写的是什么意思?知识要测试在页面输出文字?

收获园豆:3
邢少 | 园豆:10926 (专家六级) | 2010-03-09 09:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册