Подтверждение ASP.NET перед выполнением codebehind
У меня есть форма, в которой пользователь может удалить запись, и мне нужно всплывающее сообщение, в котором пользователь должен нажать "ОК", чтобы подтвердить удаление.
Кнопка удаления:
<asp:Button ID="btnDelete" runat="server" Text="Delete" UseSubmitBehavior="false" OnClick="btnDelete_Click" OnClientClick="confirmation();" />
Функция подтверждения:
function confirmation() {
var answer = confirm("Are you sure you want to delete? This action cannot be undone.")
}
Итак, прямо сейчас нажатие кнопки удаления запускает подпрограмму btnDelete_Click в коде позади независимо от того, нажали ли вы "ОК" или "Отмена" во всплывающем окне. Я знаю, что могу добавить if (answer) {- некоторый код здесь -} в мою функцию javascript, но возможно ли использовать javascript для выполнения кода из кода позади? Или есть другой способ сделать это?
Ответы
Ответ 1
Попробуйте сделать следующее. Вы должны вернуть результат функции подтверждения (true или false).
<asp:Button
ID="btnDelete"
runat="server"
Text="Delete"
UseSubmitBehavior="false"
OnClick="btnDelete_Click"
OnClientClick="return confirmation();" />
function confirmation() {
return confirm("Are you sure you want to delete?");
}
Ответ 2
Поместите это в свой код aspx:
OnClientClick="return confirm('Are you sure you want to delete this project?');"
Ответ 3
используйте этот образец:
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="return ConfirmOnDelete();"/>
<script type="text/javascript">
function ConfirmOnDelete() {
if (confirm("Do you really want to delete?") == true)
return true;
else
return false;
}
</script>
Ответ 4
Я знаю, что это старый пост, но вы можете поместить вышеупомянутые ответы в одну строку следующим образом. И вам даже не нужно писать функцию.
<asp:Button runat="server" ID="btnDelete" Text="Delete" OnClick="btnDelete_Click" OnClientClick="if ( !confirm('Are you sure you want to delete ? ')) return false;" />
Ответ 5
Мы можем легко сделать это с помощью ConfirmButtonExtender,
<ajaxToolkit:ConfirmButtonExtender ID="cbeDelete" TargetControlID="btnDelete" ConfirmText="Are you sure you want to delete? This action cannot be undone." runat="server">
Это очень просто...
Ответ 6
Если вы хотите исключить какой-либо код на стороне сервера, не отправляя сообщение назад, вы должны использовать ajax для этого.
function confirmation() {
var answer = confirm("Are you sure you want to delete? This action cannot be undone.")
if(answer)
{
$.post("ajaxserverpage.aspx?item=34",function(data){
alert(data);
});
}
return false;
}
и у вас есть страница с именем ajaxserverpage.aspx и на странице загрузки этой страницы, проверьте строку запроса и выполните соответствующий код на стороне сервера и верните некоторую строку
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["item"] != null)
{
// read the item and do your stuff here
Response.Write("Deleted succssfully");
Response.End();
}
}
Вы также можете использовать generic handler (.ashx)
для обработки вашей стороны на стороне сервера ajax вместо файла .aspx. Я бы предпочел этот метод.
Ответ 7
Еще один способ добиться этого - использовать AJAX Toolkit ConfirmButton Extender, как показано ниже:
http://www.ezineasp.net/Samples/ASP-Net-AJAX-cs/Control-Toolkit/AJAX-ConfirmButton-Control/Default.aspx
Ответ 8
Я думаю, что выше должно работать, если вы не можете использовать его с Button, попробуйте <asp:link button>
. Шахта прекрасно работает.
Страница ASPX: -
<asp:LinkButton ID="takeActionBtn" CausesValidation="false" runat="server"
onclientclick="return confirm('Do you really want to perform Action ?');"> Take Action </asp:LinkButton>
Код сервера VB: -
Protected Sub takeActionBtn_Click(ByVal sender As Object, ByVal e As EventArgs) Handles takeActionBtn.Click
End Sub
Одна вещь, которую я заметил, это то, что если вы используете элемент управления (ascx) внутри страницы, вам может потребоваться отключить/включить на странице или уровне управления AutoEventWireup="false" <%@ control in <%@ page
Удачи!!
Ответ 9
1) Дизайн формы
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type = "text/javascript">
function Confirm() {
var confirm_value = document.createElement("INPUT");
confirm_value.type = "hidden";
confirm_value.name = "confirm_value";
if (confirm("Do you want to save data?")) {
confirm_value.value = "Yes";
} else {
confirm_value.value = "No";
}
document.forms[0].appendChild(confirm_value);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:Button ID="btnConfirm" runat="server"
OnClick = "OnConfirm" Text ="Raise Confirm" OnClientClick = "Confirm()"/>
</form>
</body>
</html>
2) Codebehind
public void OnConfirm(object sender, EventArgs e)
{
string confirmValue = Request.Form["confirm_value"];
if (confirmValue == "Yes")
{
this.Page.ClientScript.RegisterStartupScript(this.GetType(),"alert('You clicked YES!')", true);
}
else
{
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('You clicked NO!')", true);
}
}
3) Когда вы нажмете кнопку подтверждения кнопки подтверждения, будет отображаться.
4) Если вы нажмете ok, то OK часть будет работать в коде еще не Part
5) Тот же метод в GRIDVIEW DELETE BUTTON.
Ответ 10
Вы можете просто поставить:
onclientclick = "return (window.confirm('text message'));
на странице ASPX
, он делает то же самое.
Ответ 11
Если вы хотите, чтобы javascript получал доступ к методам в коде позади, вы всегда можете выставить их в службе RESTful.
$.ajax({
url: 'url to the rest call',
success: successfuntion(),
dataType: 'text/json'
});
Попросите вызов REST выполнить любую логику и отправить некоторые данные, чтобы указать на успех. Затем просто используйте функцию success, чтобы удалить элемент из DOM.