ASP.NET WebForms WebSite - 控件在代码隐藏中而不是在前端更改它们的值

ASP.NET WebForms WebSite - controls changes their's values in codebehind but not on frontend

我会尽力表达我对 WebForms 的不理解。也许有人可以向我解释....

  1. 我在 'quite big' WebForms(网站)应用程序中工作。
  2. 应用程序已经有一个 PopUp(我必须使用它,因为我没有时间制作一个新的),例如 Winforms 中的 MessageBox,但是:
    • 它的位置在 MasterPage.master(我像 ((MasterPage)Poup.Show("blablabla", yes_no));
    • 我可以给它添加按钮并改变样式等
    • 它不会停止应用程序(如 WinForms 中的 .ShowDialog()),所以我必须动态分配 onClick 事件并 assign/catch 它们在 Page_Load 上根据用户输入转到所需的方法在表格上。目前我对此无能为力。

问题来了:

根据表单验证,如果用户按下一个按钮(在表单上)- 然后表单会返回它的 TextBox.Text 值并更改 DropDownLists 的 SelectedIndexes 和 SelectedValues。

但是如果您使用我的弹出窗口使用相同的方法 WINDOW:

ex:你确认了吗? YES/NO

如果您按下您按下任何按钮,则:代码隐藏可以看到更改,但文本框仍然可见,屏幕上显示之前的数据,下拉列表也选择了旧值

但是如果您按下一个表单按钮(无论是哪个),即使它的方法什么都不做 - 所有表单都将 "RELOAD" 并在屏幕上显示正确的数据。

(不是关于Runat="server"或AutoPostBack,我查过了)

我不知道该怎么办:(

(有一段时间没有使用 Web 表单事件,只是回答以防其他人使用。)

出于好奇,如果在弹出按钮的 javascript 处理程序中获取主页上的表单按钮之一的 ElementById 并在其上调用“.click()”,会发生什么情况?

基本问题听起来像是主页上有一个 runat/server 表单,与它相关联的某些行为是由主页运行服务器按钮提交的,而不是由您的弹出 JS 提交的。

使用上述方法很容易测试。如果行得通,请更进一步,根据这些按钮的作用,尝试找出行得通的原因。

(如果您根本没有在弹出窗口中使用 JS,那么查看源代码输出 HTML,因为我确定 是。回溯那些调用应该可以帮助您理解从弹出按钮按下到表单提交的跟踪。)

我可能被 "OnClick" 误导了你,这不是 javascript OnClick="method()" 问题。

我的意思是按钮上的 ClickEvent(在代码隐藏中)。对于前。如果表单通过验证,我必须这样做:

ViewState["PopUpSelection"] = "yes_no";
(MasterPage)PopUp.Show("blabla",yes_no) //loads popup from MasterPage;
return;

然后 Page_Load 我有:

**if (string)ViewState["PopUpSelection"] == "yes_no"
{
     ButtonConfirmYes.Click += new EventHandler(MyMethod);
}**

并且如果从 FORM 按钮调用方法 "MyMethod",则一切“都会正常”。

如果您从 PopUp 按钮调用相同的方法 :代码隐藏可以看到更改,但在屏幕上没有任何反应,除非我按下 任何表单按钮,不管它做什么

更新面板用于部分刷新他内部的某些字段,由某些触发器引起,如按钮、文本更改等

查看有关更新面板的更多信息: