Asp.net

如何避免按鈕點擊時的 Page_Load()?

  • January 13, 2022

我有兩個按鈕,預覽和保存。借助預覽按鈕,使用者可以根據格式查看數據,然後可以保存。

但是當點擊預覽時,附加到 ajaxcontrol (Calender) 的一個文本框變為空,使用者必須在保存前填寫日期。如何處理?在預覽點擊我得到細節以顯示佈局中的數據。

<asp:TextBox ID="txtDate" ReadOnly="true" runat="server"></asp:TextBox>
                   <div style="float: right;">
                       <asp:ImageButton ID="imgcalender1" runat="server" ImageUrl="~/images/calendar.png"
                           ImageAlign="Bottom" />
                       <asp:CalendarExtender ID="ajCal" TargetControlID="txtpublishDate" PopupButtonID="imgcalender1"
                           runat="server">
                       </asp:CalendarExtender>
                       <asp:RequiredFieldValidator ID="RequiredFieldValidator2"  ValidationGroup="group1" runat="server" ControlToValidate="txtDate"
                           ForeColor="Red" Font-Bold="true" ErrorMessage="*"></asp:RequiredFieldValidator>
                   </div>

<asp:Button ID="btnPreview" runat="server" Text="Preview" OnClick="btnPreview_Click" />
                   <asp:Button ID="btnsubmit" runat="server" ValidationGroup="group1" Text="Save" OnClick="btnsubmit_Click" />

據我了解,預覽按鈕會導致回發,而您不希望這樣,請在預覽按鈕上嘗試此操作:

<asp:button runat="server".... OnClientClick="return false;" />

同樣,這也有效:

YourButton.Attributes.Add("onclick", return false");

編輯:

似乎使用者問題的答案是預覽按鈕的 HTML 標記的簡單更改

CausesValidation="False"

在您的 aspx 程式碼(伺服器端)中使用 Page.IsPostback()。像這樣:

private void Page_Load()
{
   if (!IsPostBack)
   {
       // the code that only needs to run once goes here
   }
}

此程式碼僅在頁面一次載入時執行,並避免踩到使用者輸入的表單更改。

引用自:https://stackoverflow.com/questions/15690963