gpt4 book ai didi

c# - UpdatePanel 中的按钮触发事件,但页面没有更新

转载 作者:行者123 更新时间:2023-11-30 22:17:32 25 4
gpt4 key购买 nike

这是标记:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<div class="well well-large">
<form class="navbar-form pull-left">
<asp:FileUpload ID="test" runat="server" CssClass="input-small" />
<br />
<asp:Button ID="btnUpload" runat="server" Text="Upload" CssClass="btn" OnClick="btnUpload_Click" />
</form>
</div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnUpload" EventName="Click" />
</Triggers>
</asp:UpdatePanel>

<asp:Panel runat="server" ID="panAlert" Visible="false">
<div class="alert alert-success" id="divAlert" runat="server">
<button id="Button1" runat="server" type="button" class="close" data-dismiss="alert">&times;</button>
You shouldn't see this message!
</div>
<asp:Panel runat="server" ID="panMarquee" Visible="true">
<div id="Div1" runat="server" class="progress progress-success progress-striped">
<div id="ProgressBar" runat="server" class="bar" style="width: 100%"></div>
</div>
</asp:Panel>
</asp:Panel>

单击 btnUpload 按钮时,服务器代码应该确定 FileUpload 控件是否有文件。如果是,它会将 Panel 控件的可见性更改为 true。它在 UpdatePanel 之外工作正常。

这是服务器代码:

protected void btnUpload_Click(object sender, EventArgs e)
{
this.SetMessage(Message.Success);
try
{
if (this.test.HasFile)
{
string filename = Path.GetFileName(GetUB04Doc.FileName);
//test.SaveAs(Server.MapPath("~/") + filename);
this.SetMessage(Message.Success);
}
}
catch (Exception ex)
{
//TODO: Do something with th exception
this.SetMessage(Message.Fail);
}
finally
{
//this.GetUB04Doc.Dispose();
}
}
private enum Message { Success, Fail }
private void SetMessage(Message msg)
{
if (msg == Message.Success)
{
this.divAlert.InnerText = "Well done! The document appears to have uploaded successfully. Please wait...";
this.divAlert.Attributes.Add("class", "alert alert-success");
}
else
{
this.divAlert.InnerText = "Oh snap! Something broke. Please contact IT right away.";
this.divAlert.Attributes.Add("class", "alert alert-error");
}

this.panAlert.Visible = true;
}

我也尝试将面板放在 ContentTemplate 部分,但结果是一样的。

关于我在这里做错了什么有什么想法吗?

最佳答案

您应该围绕您正在从另一个 UpdatePanel 中的异步回发修改的区域,并将 UpdateMode 设置为 Conditional。然后从代码隐藏中手动更新另一个:

<asp:UpdatePanel ID="panAlertUpdatePanel" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:Panel runat="server" ID="panAlert" Visible="false">
<!-- ....

代码隐藏:

// ...
this.panAlert.Visible = true;
panAlertUpdatePanel.Update()

旁注:正如@Belogix 已经评论过的,您应该使用 AsyncFileUpload UpdatePanel 中的控件,因为常规 FileUpload 控件不支持异步回发。

MSDN :

Controls that Are Not Compatible with UpdatePanel Controls:

  • ...
  • FileUploadHtmlInputFile 控制它们何时用于上传文件作为异步回发的一部分。
  • ...

To use a FileUpload or HtmlInputFile control inside an UpdatePanel control, set the postback control that submits the file to be a PostBackTrigger control for the panel. The FileUpload and HtmlInputFile control can be used only in postback scenarios.

关于c# - UpdatePanel 中的按钮触发事件,但页面没有更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16694954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com