Я пытаюсь вызвать обратную передачу, если определенное условие выполняется. Первоначально пользователь нажимает кнопку в моей форме, сервер выполняет определенную работу, и в процессе выполнения этой работы он назначает скрытому полю значение «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».
Спасибо!