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

时间:2013-03-28 19:54:53

标签: asp.net c#-4.0 webforms asp.net-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" />

6 个答案:

答案 0 :(得分:15)

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

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

此代码仅运行页面加载的第一个时间,并避免踩到用户输入的表单更改。

答案 1 :(得分:8)

据我所知,预览按钮导致回发而您不想要,请在预览按钮上尝试:

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

同样这也有效:

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

编辑:

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

CausesValidation="False"

答案 2 :(得分:3)

您可以将代码放入

Page_Init()
{
   //put your code here
}

而不是

Page_Load()
{
   //code
}

答案 3 :(得分:2)

我有同样的问题和上面的解决方案“CausesValidation =”False“”甚至添加“UseSubmitBehavior =”False“”DID NOT work - 它仍然称为“Page_Load”方法。

对我有用的是在Page_Load方法中添加以下行。

if (IsPostBack) return; 

我提到这个,如果它可以帮助某人(我的意思是上面的评论,但StackOverflow不允许我发表评论,因为我是一个新用户 - 因此是一个新的回复)。

答案 4 :(得分:1)

尝试将此添加到aspx页面中的按钮属性。

OnClientClick="return false;"

答案 5 :(得分:-1)

form1.Action = Request.RawUrl; 

在页面加载时编写此代码,然后页面不会在按钮单击上回发