[英]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.