web-dev-qa-db-ja.com

コードビハインドを実行する前にASP.NETを確認する

ユーザーがレコードを削除できるフォームがあり、削除を確認するためにユーザーがOKをクリックする必要があるポップアップメッセージが必要です。

削除ボタン:

<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.")
    }

そのため、今すぐ、削除ボタンをクリックすると、ポップアップボックスで[OK]または[キャンセル]のどちらをクリックしても、コードビハインドでbtnDelete_Click Subが実行されます。 javascript関数にif(answer){-some code here-}を追加できることは知っていますが、javascriptを使用して分離コードからコードを実行することは可能ですか?または、これを行う別の方法はありますか?

14
Sara

次のようにしてみてください。確認関数の結果を返す必要があります(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?");
}
33
Thit Lwin Oo

これをaspxコードに入れてください:

OnClientClick="return confirm('Are you sure you want to delete this project?');" 
10
Jim

私はこれが古い投稿であることを知っていますが、上記の答えをこのような1行に入れることができます。また、関数を記述する必要もありません。

 <asp:Button runat="server" ID="btnDelete" Text="Delete" OnClick="btnDelete_Click" OnClientClick="if ( !confirm('Are you sure you want to delete ? ')) return false;"  />
4
Praveen Mitta

このサンプルを使用してください:

<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
Ashwini Verma

これを確認するには、ConfirmButtonExtenderを使用します。

<ajaxToolkit:ConfirmButtonExtender ID="cbeDelete" TargetControlID="btnDelete" ConfirmText="Are you sure you want to delete? This action cannot be undone." runat="server">

その非常にシンプルな...

3
thevan

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)分離コード

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]パーツがコードで機能します。それ以外の場合は[パーツなし]

5)GRIDVIEW DELETE BUTTONの同じ方法。

0
Ratha Krishnan

これを実現するさらに別の方法は、次のようにAJAX Toolkit ConfirmButton Extenderを使用することです。

http://www.ezineasp.net/Samples/ASP-Net-AJAX-cs/Control-Toolkit/AJAX-ConfirmButton-Control/Default.aspx

0
mellodev

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

私が注意したことの1つは、ページ内でコントロール(ascx)を使用している場合、ページまたはコントロールレベルでオフ/オンにする必要がある場合があるということですAutoEventWireup="false" <%@ control in <%@ page

幸運を !!

0
PatBad

実際にポストバックを行わずにサーバー側でコードを実行したい場合は、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();
        }
    }
_

.aspxファイルの代わりにgeneric handler (.ashx)を使用して、ajaxサーバー側の処理を行うこともできます。私はこの方法を好むでしょう。

0
Shyju

あなたはちょうど置くことができます:

onclientclick = "return (window.confirm('text message'));

ASPXページでは、同じことを行います。

0
Garry_G