[英]How can i call two javascript function from c# page both on button click
[英]How can prevent postback page in the case of using both a JavaScript and a C# method on a button?
這是一個 ASP.NET C# 的問題。
<script>
function buttonfunc() {
document.getElementById("demo").innerHTML = "js work";
}
</script>
<form id="form1" runat="server">
<div>
<p id="demo"></p>
<asp:Button ID="UpdateButton" runat="server" Text="Update"
OnClick="UpdateButton_Click" OnClientClick="buttonfunc()"; return false;/>
</div>
</form>
protected void UpdateButton_Click(object sender, EventArgs e)
{
Response.Write("cs work");
}
在按鈕上同時使用 JavaScript 和 C# 方法的情況下,我們如何停止回發頁面並同時顯示兩行文本(如果可能,不使用 AJAX)?
這種工作方式相當方便。
雖然該按鈕可以同時具有客戶端事件和服務器端事件?
如果客戶端js代碼/事件返回false,則服務器端事件不會觸發。 這非常適合提示用戶刪除記錄或執行某些您需要“確認”的操作。
所以,按下這個按鈕:
<asp:Button ID="cmdDel" runat="server" Text="Delete record"
CssClass="btn"
OnClick="cmdDel_Click"
OnClientClick="return DelConfirm()" />
<script>
function DelConfirm() {
return confirm("Really delete this reocrd?")
}
</script>
因此,如果 js 代碼(客戶端)返回 true,則服務器按鈕點擊運行。 如果客戶端 js 代碼返回 false,則服務器端按鈕不會運行。
你會看到上面運行的:
並同時顯示兩行文字
嗯,不清楚你在這里的目標是什么。 您要在此處顯示哪兩行?
我的意思是,要么你想要/讓服務器端按鈕事件代碼運行,要么它不運行。 如前所述,如果您返回 false,那么您不應該看到回發。 使用您的示例代碼,返回 false 應該導致服務器端按鈕甚至永遠不會運行。
我的意思是,如果您不進行回發,那么您可以/將會運行服務器端按鈕代碼就沒有意義。 您需要回發才能發生這種情況。
現在,您可能可以使用更新面板,它允許您僅定義 web 頁面中將傳送到服務器並運行您的代碼的那部分。 從用戶的角度來看,該頁面似乎沒有回發(在這種情況下您實際上沒有完整的頁面回發)。 瀏覽器滾動條不會改變位置,並且您不會看到瀏覽器“微調器”顯示回發。
因此,您在腳本管理器中拖放,然后在更新面板中,您將擁有:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="cmdDel" runat="server" Text="Delete record"
CssClass="btn"
OnClick="cmdDel_Click"
OnClientClick="return DelConfirm()" />
<script>
function DelConfirm() {
return confirm("Really delete this reocrd?")
}
</script>
</ContentTemplate>
</asp:UpdatePanel>
現在,在您的代碼示例中,將所有內容都放在內容模板中,並刪除客戶端點擊的 return false。 試一試。
現在,請謹慎對待上述內容。 頁面生命周期會觸發。 因此,頁面加載事件將觸發(就像它總是那樣),然后您的代碼存根將運行。 但是對於用戶來說,您看不到完整的頁面回發。 這通常稱為“部分頁面”回發。
不用說,要構建一個有效的 web forms 頁面,99% 的時間,您的頁面加載事件會設置控件的值並僅在第一個頁面上加載?
您在頁面加載事件中有 IsPost 后存根。 所以你真正的第一次頁面加載代碼只運行一次。
例如:
if (!IsPostBack)
{
// first time page load
// load up grid, some combo boxes etc.
// this code only runs ONE time, on first page load
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.