asp.net c# 命令按钮在单击时不运行命令代码



我有一个c#asp.net应用程序,它有3个页面。第1页是数据输入。第2页是名称搜索。第3页是账户信息摘要。

第一页包含2个asp:textbox和2个按钮。第一个文本框允许用户输入帐号。第二个文本框允许用户输入名称以"按名称查找账号"搜索。按钮1通过querystring将1号文本框中的账号提交到账户摘要页面。按钮2通过querystring将要查找的名称提交到名称搜索页面。

在姓名搜索页面上,会显示帐号和姓名列表,帐号是返回数据条目的href链接。账号通过名称搜索页面上链接中的查询字符串传输回数据输入页面。

我的问题就是这样发生的。当我从姓名搜索页面或帐户摘要页面返回到数据输入页面时。。。我解析查询字符串,用帐号预先填充文本框#1的值。

如果用户随后更改了预先填充的帐号并单击按钮1。账户摘要页面上的数据用于预先填充的账户号码,而不是用户键入的新账户号码。

命令按钮的代码设置文本框#1的值,并将其作为单击事件的一部分粘贴在查询字符串中;但是,querystring保留了预先填充的值。

            case "summary":
            sAPN = txtAPN.Text.ToString();  (<--- Textbox 1) this always comes out as the    prepopulated value.
            sfxbal = fxbal.CheckAPN(sAPN);  (<---- Validation function)
            if (sfxbal.Length == 14)        
            {
                sAPN = sfxbal;
                sfxbal = "";
            }
            if (sfxbal == "")
                Response.Redirect("CreateAccount_Summary.aspx?APN=" + sAPN);
            else
                Response.Redirect("GetAPN.aspx?APNError=" + sfxbal);
            break;

我已经尝试使用Use-Submit行为为false。我尝试过使用javascript"onblur",尽管我可以在警报中显示txtAPN(文本框1)的值,其中包含新用户输入的值,而不是预填充的值,但数据始终是预填充的。

也不会进行验证。

如果在查询字符串中不返回任何内容。新用户输入的帐号有效,摘要页面上的数据用于新帐号。

它的行为就像我的命令代码被旁路了一样。为什么会发生这种情况?

我有一种强烈的感觉,每次加载页面时都会设置Text属性。

您需要设置一次Text属性(仅当执行GET时):

protected void Page_Load(object sender, EventArgs e) 
{
    if (!Page.IsPostBack)
    {
       txtAPN.Text = ....;
    }
}

否则,每次提交表单时,文本框都会从查询字符串中获取值(它会覆盖用户给定的值)。

最新更新