【问题标题】:Having to click button twice to trigger postback in asp.net必须单击按钮两次才能在 asp.net 中触发回发
【发布时间】:2015-11-27 20:19:20
【问题描述】:

我的搜索按钮单击事件中有一些验证代码,并且遇到了必须单击两次才能工作的问题。 ASP 代码:

        <asp:Button ID="SearchButton" runat="server" Text="Search" Width="148px" OnClick="SearchButton_Click"  style="height: 35px" />

代码背后

protected void SearchButton_Click(object sender, EventArgs e)
{
        string title = TitleSearch.Text;
        Regex rgx = new Regex("^[0-9A-Za-z ]+$");
        if (title != "" && !rgx.IsMatch(title))
        {
            ErrorLabel.Text = "Special characters are not allowed";
        }
        else
        {
             SearchButton.PostBackUrl = "results.aspx";

        }
}

【问题讨论】:

  • 按钮的触发器 PostBacks 在 aspx 页面中.. 你能在 .cs 文件中显示你的 Page_Load 代码的样子吗..?也使用这个Response.Redirect("results.aspx"); 而不是SearchButton.PostBackUrl="resuts.aspx";
  • @MethodMan 是对的。第一次单击按钮时,会设置按钮的PostBackUrl 值。第二次单击时,可以使用该值。因此,请按照建议尝试Response.Redirect
  • 问题是它似乎没有将任何数据发布到下一页。我真正想要做的是仅在正则表达式验证时回发
  • 你是什么意思Problem there is that it doesn't seem to post any data to the next page请解释你正在尝试做什么以及你对PostBack这个词的理解
  • 好吧,我可能应该从这里开始。这一点是我试图防止使用正则表达式将特殊字符输入到文本框中,如果它有效,我试图将页面上的数据发布到结果页面。我决定对按钮控件进行验证,这似乎是一个错误,因为 response.redirect 似乎将数据发布到下一页。

标签: c# asp.net


【解决方案1】:

文本框有回发吗?因为如果您更改文本框中的文本,它会在您离开文本框时进行回发。所以如果您单击按钮,文本框的回发就会触发。

我会用 java 检查文本框

在页面加载事件中添加“将 EditGroup 更改为要检查的 TextBoxName”

EditGroup.Attributes.Add("onchange", "return SomeTextChanged();");

这将为文本框添加一个 onchange 事件,并在您单击按钮时调用您的 aspx 页面中的 java 函数

然后在您的 aspx 页面中添加“再次将 EditGroup 更改为您要检查的 TextBox 的名称”

<script type="text/javascript">
function SomeTextChanged() {
    var Entered = document.getElementById('<%= EditGroup.ClientID %>');
    if (Entered.value != "" && !Entered.value.match("^[0-9A-Za-z ]+$"))
    {
        alert("Special characters are not allowed");
        document.getElementById('<%= EditGroup.ClientID %>').value = '';
    }
    else
    {
    }
}
</script>

因此,如果您输入了不允许的内容,您将收到一条消息“不允许使用特殊字符”
这也将阻止您的页面执行按钮单击事件中的其余代码。

而且您还需要清空文本框“我知道这可能不是最好的方法,但是如果您不清空文本框并且用户将再次单击该按钮,它将不会运行 java 代码,因为文本没有改变”

所以如果文本很好,java 脚本将什么也不做,按钮点击事件将触发

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多