如何在单击按钮时避免Page_Load()?

Abh*_*jan 6 asp.net webforms asp.net-4.0 c#-4.0

我有两个按钮,预览和保存.借助预览按钮,用户可以根据格式查看数据,然后可以保存.

但是,当单击预览时,附加到ajaxcontrol(日历)的一个文本框变为空,用户必须在保存之前填写日期.怎么办呢?在预览中单击我获取详细信息以显示布局中的数据.

<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" />
Run Code Online (Sandbox Code Playgroud)

tgo*_*sch 15

在aspx代码(服务器端)中使用Page.IsPostback().像这样:

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

此代码仅在一次加载页面时运行,并避免踩到用户输入的表单更改.


Pra*_*ati 8

根据我的理解,预览按钮导致回发而你不想要,请在预览按钮上尝试:

<asp:button runat="server".... OnClientClick="return false;" />
Run Code Online (Sandbox Code Playgroud)

同样这也有效:

YourButton.Attributes.Add("onclick", return false");
Run Code Online (Sandbox Code Playgroud)

编辑:

似乎用户问题的答案是在预览按钮的HTML标记中进行了简单的更改

CausesValidation="False"
Run Code Online (Sandbox Code Playgroud)

  • 尝试CausesValidation ="False",预览按钮属性,让我知道是否有效 (4认同)