2017-07-18 65 views
0

我是使用.NET進行網絡編程的新手。ASP.NET WebForms確認

我正在開發一個webforms的網頁,我希望在某個時候以編程方式顯示一個模式窗口,供用戶接受或取消,根據一個問題。 JavaScript的「確認」功能到底是什麼?

我試圖得到它調用JavaScript函數:

Page.ClientScript.RegisterStartupScript (this.GetType(), "CallMyFunction", "MyFunction()", true); 

但我需要做的是無需刷新頁面,我還需要控制用戶是否接受或取消,我不知道怎麼做。

我也嘗試過使用DevExpress的ModExPopupExtender控件。

有人能告訴我一個簡單的方法來得到我想要的嗎?

我不明白在web編程中如此平常的事情,並且PHP + javascript不會造成任何問題可能會如此複雜。

所有開始在後面的代碼一鍵式事件:

protected void btn1_Click(object sender, EventArgs e) 
     { 
      //I make a series of checks 

      //If certain conditions I want to show the confirm 

      //According to the user has chosen ok or cancel will perform a certain action 
     } 

的OnClientClick不幫我,因爲之前推出的「確認」我必須做在服務器端進行一些檢查。 非常感謝。

+1

嗨!請查看[如何提問](https://stackoverflow.com/help/how-to-ask)並改進您的問題。現在它對細節有點點亮,這讓其他用戶很難幫助你。 – Ortund

+0

請分享代碼你在做什麼 –

+0

我已經添加了一些代碼來解釋我想要做什麼。謝謝。 –

回答

0

你可以在c#中使用下面的代碼來調用javascript函數。下面的代碼將執行afterpostback()JavaScript函數:

ClientScript.RegisterStartupScript(GetType(), Javascript, "javascript:afterpostback();", true); 

,你可以寫代碼JavaScript函數來顯示任何股利或彈出:

<script language="javascript" type="text/javascript"> 
function afterpostback() { 

      //Here you can write javascript to display div/modal 
    } 
</script> 
1

您可以使用OnClientClick這是大多數網站上的屬性控制。

我想只是把一個簡單的confirm()對話框,在服務器端執行代碼,如果用戶點擊確定,什麼都不做,如果用戶取消操作:

<asp:Button runat="server" ID="btnSave" Click="btnSave_Click" Text="Save" 
    OnClientClick="return confirm('Are you sure you want to do this thing?');" /> 

你可以做其他事情一樣好,但關鍵要記住的是,您在OnClientClick中所做的任何事情都會發生在之前頁面被髮回服務器。

這也是完全有效的:

<asp:Button runat="server" ID="btnSave" 
    OnClientClick="showModalConfirm('some message goes here');" ... /> 

<script> 
    function showModalConfirm(msg) 
    { 
     $(".modal .message").innerHtml(msg); 
     $(".modal").Show(); 
    } 
</script> 

您可以設置的OnClientClick應該在你的代碼隱藏在完全相同的方式執行的操作:

protected void Page_Load(object sender, EventArgs e) 
{ 
    btnSave.OnClientClick = "return confirm('Are you sure you want to do this thing?');"; 
} 
+0

Onclientclick不能幫助我,因爲在啓動「確認」之前,我必須在服務器端進行一些檢查。非常感謝你。 –

0

一種方式我以前這樣處理在頁面上有2個按鈕。第一個將首先可見並標記爲「提交」。第二個將最初隱藏並標記爲「確認」。 「提交」按鈕會在點擊後回發並執行您的服務器端檢查/驗證。如果這些檢查失敗,則會顯示相應的錯誤消息。如果這些檢查通過,則會顯示一個合適的「請確認您的提交」類型的消息,「提交」按鈕將隱藏起來,並且第二個「確認」按鈕將變爲可見。點擊確認按鈕後,它會再次回發並完全提交。

編輯:我忘了提及,還有一點,這是我發生在我最初發布後。在服務器端驗證成功的情況下,您必須保護字段不被編輯,因爲您顯然不希望用戶更改值,然後單擊「確認」按鈕。這意味着禁用所有輸入控件 - 如果你有很多,這可能會很痛苦。你還必須給他們一個(有意)編輯的方式,以防服務器端驗證通過,你顯示確認,他們改變主意 - 所以基本上你需要第三個「取消/編輯」類型的按鈕,將表單放回編輯模式並顯示您的初始提交按鈕。