7

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

但是当单击预览时,附加到 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" />
4

7 回答 7

16

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

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

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

于 2013-03-28T20:02:42.973 回答
8

据我了解,预览按钮会导致回发,而您不希望这样,请在预览按钮上尝试此操作:

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

同样,这也有效:

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

编辑:

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

CausesValidation="False"
于 2013-03-28T20:01:59.877 回答
3

你可以把你的代码放进去

Page_Init()
{
   //put your code here
}

代替

Page_Load()
{
   //code
}
于 2013-05-21T10:18:54.447 回答
3

我遇到了同样的问题,上面的“CausesValidation =“False””解决方案甚至添加“UseSubmitBehavior =“False””都不起作用 - 它仍然称为“Page_Load”方法。

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

if (IsPostBack) return; 

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

于 2014-07-25T00:54:14.040 回答
1

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

OnClientClick="return false;"
于 2013-03-28T19:59:48.303 回答
0

对我来说,@tgolisch 的回答效果更好,也许是因为我还是个菜鸟。

我试图在我的 WebForm 中加载一个简单的验证码,并最终在 Page_Load 事件和 Button Click 事件(对于代码片段)中使用引用类型。

最后我只需要编辑一些东西就完成了:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            var captchaText = generateCaptchaCode(5);
            lblCaptcha.Text = captchaText;
        }
    }

    protected void btnCheckCaptcha_Click(object sender, EventArgs e)
    {
        if (txtCaptchaCode.Text == lblCaptcha.Text)
            lblMessage.Text = "Right input characters";
        else
            lblMessage.Text = "Error wrong characters";
    }
于 2022-01-13T20:37:10.953 回答
-1
form1.Action = Request.RawUrl; 

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

于 2015-02-02T07:09:18.697 回答