我有一个有3页的c#asp.net applcation。第1页是数据输入。第2页是名称搜索。第3页是帐户信息摘要。
第一页包含2个asp:文本框和2个按钮。第一个文本框允许用户输入帐号。第二个文本框允许用户输入名称“按名称查找帐号”搜索。按钮1通过查询字符串将文本框号1中的帐号提交到帐户摘要页面。按钮2提交名称以查找以通过查询字符串命名搜索页面。
在名称搜索页面上,显示帐号和名称列表,帐号为href链接返回数据条目。帐号通过名称搜索页面链接中的查询字符串传回数据输入页面。
我的问题就是这样发生的。当我从名称搜索页面或帐户摘要页面返回数据输入页面时...我解析查询字符串以使用帐号预先填充文本框#1的值。
如果用户随后更改预先填充的帐号并点击按钮编号1.帐户摘要页面上的数据用于预先填充的帐号,而不是用户输入的新帐号。
命令按钮的代码设置文本框#1的值,并将其作为click事件的一部分粘贴在查询字符串中;但是,查询字符串保留了预先填充的值。
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;
我尝试过使用“使用提交”行为。我已经尝试使用javascript“onblur”,虽然我可以在警告中显示txtAPN(文本框1)的值,新用户输入的值而不是预先填充的值,但数据始终是预先填充的值。
也没有验证。
如果我在查询字符串中没有返回任何内容。新用户输入的帐号是valildated,摘要页面上的数据是新帐号。
它绝对像我的命令代码被旁路。为什么会这样?
答案 0 :(得分:1)
我强烈感觉每次加载页面时都会设置Text属性。
您需要设置一次Text属性(仅在进行GET时):
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
txtAPN.Text = ....;
}
}
否则每次提交表单时,文本框都会从查询字符串中获取值(它会覆盖用户给出的值)。