ОК, я нашел обходной путь.Сначала я приведу краткое объяснение, а затем гораздо более длинное для тех, кто в будущем увидит эту страницу, потому что такие любители, как я, которые могут не знать об этом в обратном направлении, могут использовать это, чтобы получить некоторую помощь.(Потому что я живу на гугле этой штуке.)
Функциональность, которую я искал, заключалась в том, чтобы иметь модальный div с различным innerHTML в зависимости от того, какая кнопка была нажата.Я также хотел, чтобы div отображался только в том случае, если страница действительна, и не все кнопки на странице вызывают проверку.
Во время тренировки была создана глобальная переменная «ButtonClicked».Затем КАЖДОЙ кнопке на странице должен быть присвоен javascript для ее атрибута onclick, который устанавливает переменную ButtonClicked в качестве идентификатора кнопки.Сценарий, назначенный для onclick, запускается ДО проверки страницы.Затем, используя ClientScript.RegisterOnSubmitStatement, я назначил функцию, которая будет вызываться после успешной проверки страницы, но непосредственно перед фактической отправкой страницы.Затем я могу получить доступ к событию «ButtonClicked», чтобы увидеть, какая кнопка была только что вызвана, и затем изменить innerHTML модального div, а затем отобразить его.(Затем выполните обратную передачу asyc, затем удалите модальный div после обратной передачи.)
Почему я не могу просто установить innerHTML модального div из функций, которые сами кнопки вызывают?Потому что innerHTML, который я помещаю туда, зависит от того, является ли страница действительной, и я знаю только, является ли страница действительной, когда я получаю функцию ShowSplashScreen.Вы также можете спросить, почему я не просто вызываю страницу для проверки из функции javascript, которую вызывает кнопка.Это происходит потому, что выполнение этого вызывает двойной вызов проверки, и на странице так много информации, что для проверки страницы требуется почти полная секунда, и потому что сама функция проверки на стороне клиента содержит некоторые вещи, которые можно вызывать ТОЛЬКО один разво время проверки.
Таким образом, конечный результат всего этого заключается в том, что function1 и функция 2 вызываются своими соответствующими кнопками при нажатии ДО проверки, а ShowSplashScreen вызывается любой кнопкой ПОСЛЕ проверки (только если страница действительна), а затем я получаю доступ к глобальной переменной, чтобы увидеть, какая из них была нажата.
Таким образом, все это будет выглядеть так:
HTML
<!-- This is a simplified version of the HTML that <asp:Button> is going to
output in the actual HTML -->
<input type="submit" id="Button1" value="Load Page" onclick="function1(this)">
<input type="submit" id="Button2" value="Save Page" onclick="function2(this)">
JavaScript
var ButtonClicked = ""; //Needs to be global
//It is not necessary to have a different function for each button,
//I just needed to for the needs of my page. If Button2 calls function1
//instead of function2, ButtonClicked is still set to "Button2".
//It is very important that EVERY button on the page calls something
//that sets ButtonClicked or you will get an bug if the user ever
//clicks a button that sets ButtonClicked, and then clicks a button
//that does not set ButtonClicked (the final function will still
//think that the first button had just been clicked)
function function1(source){
ButtonClicked = source.id;
//whatever else Client Script that needs to be run from this button
}
function function2(source){
ButtonClicked = source.id;
//whatever else Clinet Script that needs to be run from this button
}
function ShowSplashScreen(){
if(ButtonClicked == "Button1")
//Use JQuery to access the dialog <div> and set the innerHTML
//to whatever
else if(ButtonClicked == "Button2")
//Use JQuery to access the dialog <div> and set the innerHTML
//to something else
}
ServerSide
//Use this code to set a function to be called after the page has
//been successfully validated. If a button does not cause validation,
//then that button will always call the function set here
//
//You should also check to see if the script has already been registered
//for speed purposes, but I'm just demonstrating particular
//functionality here.
protected void Page_Load(object sender, EventArgs e)
{
ClientScript.RegisterOnSubmitStatement(this.GetType(), "ShowSplashScreen",
"ShowSplashScreen()");
}