簡體   English   中英

Javascript與ASP.NET代碼一起使用

[英]Javascript working with ASP.NET code behind

我必須為一個簡單的Intranet論壇創建一個刪除按鈕。 我想在刪除帖子時有一個JavaScript警報框(或等效對話框)要求確認。 但是,我發現很難將javascript確認框的結果輸入到后面的代碼中。 這有可能嗎? 還是我必須使用另一種設計?

如果用戶點擊取消,您將只是防止發生回調

編輯:喬什·斯托多拉指出


<asp:Button runat="server" ID="Save" 
    OnClientClick="if (!confirm('Are you sure?')) return false;" />

您想要執行以下操作:

    <asp:button runat="server" id="mybutton" 
OnClientClick="return confirm('delete?');" />

您可以查看以下鏈接,其中我展示了如何使用GridView控件執行類似的操作。

http://www.highoncoding.com/Articles/138_GridView_Confirm_When_Delete.aspx

讓我知道您是否需要進一步的幫助!

如果要使用其他設計,對於類似的確認框,我總是在ASP.NET AJAX Control Toolkit中使用ModalPopup。 這樣一來,我不必觸摸javascript,就可以更好地控制正在發生的事情,因為在模式彈出窗口中單擊按鈕將使我回發。

您應該可以執行以下操作-只有在他們選擇“是”的情況下,它才會觸發該帖子:

<asp:Button ID="btnDelete" text="Delete" runat="server" 
OnClick="DoDeleteFunction();"  
OnClientClick="return confirm('Are you sure you want to delete?')">
</asp:Button>

為什么要將響應發送到后面的代碼? 您可以做的是在按鈕中,只需按一下即可,這樣,如果他們取消了按鈕,則根本不回發。

執行以下操作:

<asp:button id="mybutton" runat="server" 
 onclientclick="javascript:if(!confirm('Confirm delete?')) return false;" />

這是基本的想法。 如果您真的需要它甚至在取消后仍然回發並傳遞確認響應,那么就個人而言,我將向表單中添加一個asp:hidden,並讓javascript適當設置隱藏字段的值。

您可以顯示一個客戶端確認對話框,如下所示:

<asp:Button ID="btnDelete" runat="server"
   OnClientClick="return confirm('really delete?');"
   OnClick="btnDelete_Click" />

僅當用戶使用“是”回答確認對話框時,才會執行回發。 否則,將不會發生任何回發,並且不會調用服務器端處理程序(btnDelete_Click)。

如果您有可用的ASP.NET AJAX,請使用ConfirmButtonExtender

您可以像往常一樣為后面的刪除按鈕連接代碼。 然后,將確認擴展器連接到它。 它將自動插入適當的JavaScript,以為您提供模式確認(帶有閃爍,而不是瀏覽器警報樣式),並且將正常進行或根據用戶的決定取消。

我建議為此子類化標准按鈕控件,以便將來可以再次使用該代碼。

namespace MyApp.Controls
{
    public class PromptButton
    {
        public string Prompt { get; set; }

        protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);

            if (!string.IsNullOrEmpty(Prompt))
            {
                // Escape apostrophe's in the prompt message
                string safePrompt = Prompt.Replace("'", "\'");

                // Add the onClick to show the alert box when clicked
                Attributes.Add("onClick", string.Format("return confirm('{0}')", safePrompt));
            }
        }
    }
}

完成此操作后,您可以在ASPX頁面頂部或web.config中添加參考:

<%@ Register Assembly="MyAssembly" Namespace="MyApp.Controls" TagPrefix="app" %>

然后,在您的頁面中使用以下內容:

<app:PromptButton ID="PromptButton1" Prompt="Are you sure?" OnClick="PromptButton1_Click" runat="server" />

這將導致顯示Javascript確認對話框,並且如果用戶單擊“確定”,則會發生回發。 如果用戶單擊“取消”,則不會發生任何事情。

一開始需要做更多的工作,但是代碼具有更高的可重用性,甚至可以完全移入一個單獨的庫中並在多個項目中使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM