Рейтинг:
4
ManiLancer
Этот код работает нормально
function Confirm() {
var confirm_value = document.createElement("INPUT");
confirm_value.type = "hidden";
confirm_value.name = "confirm_value";
if (confirm("Do you want to Delete data?")) {
confirm_value.value = "Yes";
} else {
confirm_value.value = "No";
}
document.forms[0].appendChild(confirm_value);
}
<asp:Button ID="Button1" OnClientClick="Confirm()" runat="server" Text="Button"/>
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Button1.OnClientClick = "return Confirm();"
Dim confirmValue As String
confirmValue = Request.Form("confirm_value")
If confirmValue = "Yes" Then
Response.Write("User Clicked yes")
Else
Response.Write("User Clicked No")
End If
End Sub
Рейтинг:
1
ZurdoDev
Подход здесь неправильный. Если вы хотите подтвердить, что пользователь что-то делает, сделайте что-то подобное в JavaScript:
function ConfirmDelete(){
return confirm("Do you want to Delete data?"); // this means that the function will either return true or false depending on what user clicks.
}
Затем в стороне ASPX на вашей кнопке вы делаете это:
<aspButton id="btnConfirm" Text="Confirm" OnClientClick="return ConfirmDelete();" OnClick="btnClick" />
Добавляя OnClientClick к вашей кнопке, а затем возвращая значение из ConfirmDelete (), если пользователь нажмет кнопку Cancel в диалоговом окне Confirm, будет возвращено значение false, а OnClientClick вернет значение false, которое предотвратит запуск кнопки postback и кода на стороне сервера. Если пользователь нажимает OK в диалоговом окне подтверждения, то возвращается true и выполняется код на стороне сервера.
Рейтинг:
1
F-ES Sitecore
На этот вопрос трудно ответить, так как мы не знаем контекста, в котором выполняется VB-код. Это в загрузке страницы? Или где-то еще?
Ваша проблема, вероятно, проистекает из недоразумения, что RegisterClientScriptBlock каким-то образом запускает ваш javascript в коде позади и что ваш .net-код работает внутри браузера и ждет вашего ввода, а затем выполняет вашу строку "если" после того, как вы нажмете подтверждение в браузере. Ну, ничего из этого не происходит.
Что делает RegisterClientScriptBlock, так это добавляет этот javascript к выходным данным, так что когда весь ваш .net-код выполнен и весь html был построен, этот html затем отправляется в браузер, и именно тогда запускается javascript.
System.Web.UI.ScriptManager.RegisterClientScriptBlock(Page, GetType(Page), "Script", "Confirm();", True)
' after executing the line above your .net code continues running
Dim confirmValue As String = Request.Form("confirm_value")
' there is no confirm_value in the request so confirmValue will be ""
If confirmValue = "Yes" Then
Response.Write("User Clicked yes")
Else
Response.Write("User Clicked No")
End If
' now that your .net code has finished building html to send to the client, that
' html is sent and the browser then runs your js and the confirm box appears
ManiLancer
я хочу запустить его в событии нажатия кнопки, OnClientClick= "return Confirm ()" не будет работать для моего сценария,я хочу вызвать функцию только из кода позади
ZurdoDev
OnClientClick-это правильный способ сделать это. Почему это не сработает для вас?
ManiLancer
вы правы, но я хочу, чтобы он использовал код позади..
F-ES Sitecore
- Позвонить кому?
ManiLancer
Функция Javascript "Подтвердить()"
ManiLancer
я представил свое решение ,оно работает нормально
F-ES Sitecore
Вы не можете вызвать javascript из серверного кода. Серверный код-это .net, и он работает на сервере, этот код генерирует html (в данном случае со встроенным javascript), и как только весь .net-код закончен, html передается браузеру, а js выполняется в браузере.