【发布时间】:2010-11-17 01:44:29
【问题描述】:
如果某个条件为真,我会尝试触发回发。最初,用户将单击我的表单上的按钮,服务器会做一些工作,在做这些工作的过程中,它会为隐藏字段分配值“1”。当页面在第一次回发后重新加载时,我正在尝试使用 javascript 检查隐藏字段,如果它是“1”,我需要再次回发页面,以便服务器端可以进行一些额外的处理。这样做的原因是我可以从后面的 C# 代码在表单上创建控件,并在 1 个用户交互中下载文件。这是我目前所拥有的:
<script type="text/javascript" language="JavaScript">
function atload() {
var HWInfo = document.getElementById('HiddenHW').value;
if (HWInfo == '1') {
alert("flag has been set");
__doPostBack('<%= hdnHidden.UniqueID %>', '');
}
}
$(document).ready(atload);
</script>
表示标志已正确设置的警报会触发,但 __doPostBack 不会。在我的 ASPX 文件中,相关部分如下:
<form id="InventoryForm" runat="server">
<div>
<asp:Label ID="lblClientList" runat="server" Text="Client List"></asp:Label>
<asp:DropDownList ID="comboClientList" runat="server"></asp:DropDownList>
<asp:Label ID="spacer1" runat="server" Text=" "></asp:Label>
<asp:Button ID="btnGenerateHWReport" runat="server" Text="Generate Hardware Inventory Report" />
<asp:Label ID="spacer2" runat="server" Text=" "></asp:Label>
<asp:Button ID="btnGenerateSWReport" runat="server" Text="Generate Software Inventory Report" />
<br />
<br />
<asp:Panel ID="MissingCompPanel" runat="server"></asp:Panel>
<asp:HiddenField ID="HiddenHW" runat="server" Value="0" />
<asp:HiddenField ID="hdnHidden" runat="server" />
</div>
</form>
我可以告诉回发永远不会触发,因为我在 Page_Load C# 代码隐藏中的断点永远不会被触发。我几乎在每一行都有断点:
if (!Page.IsPostBack)
{
// Page is not a postback, this is the first visit here
string foo = HiddenHW.Value;
}
else
{
// Page is a postback and not initial load
string foo = HiddenHW.Value;
}
为什么我的 __doPostBak 在警报没有触发后没有触发,有没有更好的方法来做到这一点?我想要的最终结果是,如果我的隐藏字段是“1”,那么我希望我的第二次服务器访问 1)实际发生并且 2)知道隐藏字段是“1”而不是默认的“0”。
谢谢!
【问题讨论】:
标签: c# javascript asp.net postback