我有一个webform的问题.
我的目标:当页面加载时,它必须将每个文本框加载为空.填写信息并单击提交后,必须提交(UpdatePaymentInfo())
问题:这里,当用户填写信息并单击提交时,它甚至在提交按钮之前调用onload函数并使所有文本框为空.
这是代码:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
string QueryStringupdatecreditcard1 = Request.QueryString.ToString();
if (String.Equals(QueryStringupdatecreditcard1, "tabID=B"))
{
divTitle.Visible = false;
trmain.Visible = false;
tdOrderSummary.Visible = false;
trCCandBilling.Visible = true;
trtest2.Visible = false;
divUpdatecreditcard.Visible = true;
trusecompaddress.Visible = false;
txtFirstName.Text = "";
txtLastName.Text = "";
txtAddress1.Text = "";
txtAddress2.Text = "";
txtCity.Text = "";
txtZip.Text = "";
txtCardNo.Text = "";
txtVccNumber.Text = "";
trAmountCharged.Visible = false;
}
}
protected void imgbtnSubmit_Click(object sender, ImageClickEventArgs e)
{
try
{
UpdatePaymentInfo();
}
}
Run Code Online (Sandbox Code Playgroud)
将OnLoad方法的当前内容包装在:
if (!Page.IsPostBack)
{
// Code in here will only be executed when the page is *not* being loaded by a postback
}
Run Code Online (Sandbox Code Playgroud)
这是因为,根据ASP.NET Page Life Cyle,您在此实例中关注的事情按此顺序发生:
加载 - 在加载期间,如果当前请求是回发,则控制属性将加载从视图状态和控制状态恢复的信息.
回发事件处理 - 如果请求是回发,则调用控件事件处理程序.之后,调用所有验证器控件的Validate方法,该方法设置各个验证器控件和页面的IsValid属性.
所以会发生什么(有点简化):
正如其他人排序的所提到的,它不一定是重构你的OnLoad方法,而你这样做是一件坏事.目前你似乎有两件不同的事情:
可能值得将其分为一个或两个(取决于可见性设置和字段清除是否将独立完成)单独的方法并调整OnLoad方法,使其看起来像这样:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!Page.IsInPostBack)
{
SetFieldVisibility();
ClearFields();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2444 次 |
| 最近记录: |