【问题标题】:Fire postback after javascript validationjavascript 验证后触发回发
【发布时间】:2015-05-23 13:45:36
【问题描述】:

我有以下aspx代码:

<td>
    <p>Customer*</p>
</td>
<td>
    <asp:TextBox ID="TextBoxCustomer" list="SiteMainContent_Customers" runat="server" OnTextChanged="CustomerTextChanged" AutoPostBack="true" required CssClass="form-control" />
    <datalist id="Customers" runat="server"></datalist>
</td>
<td class="auto-style1">
    <asp:RequiredFieldValidator ID="RequiredFieldValidatorKunde" runat="server" ControlToValidate="TextBoxCustomer"
        CssClass="Error" ErrorMessage="RequiredFieldValidator">*</asp:RequiredFieldValidator>
    <asp:CustomValidator ID="CustomCustomerValidator" runat="server" ControlToValidate="TextBoxCustomer" ErrorMessage="Customer not in CRM"
        OnServerValidate="ValidateCustomer" CssClass="Error"></asp:CustomValidator>
</td>

自定义验证器:

public void Validate(object source, ServerValidateEventArgs args)
{
    try
    {
        GetCompanyId(args.Value);
    }
    catch (Exception ex)
    {
        ((CustomValidator)source).ErrorMessage = ex.Message;
        args.IsValid = false;
        return;
    }
    args.IsValid = true;
}

代码是我整个 aspx 页面的 sn-p。 如果其他字段的某些字段未验证并且您必须更正数据,则TextBoxCustomer 不会再回发到代码隐藏。

即使我点击了提交并且字段中的数据没有验证,我该怎么做才能让 TextBoxCustomer 回发?

这与No postback after Javascript function 有点相关 - 我认为这是因为验证返回 false。

【问题讨论】:

  • 我可以看看你的ValidateCustomer函数吗?
  • @RameshRajendran 我已将自定义验证器添加到答案中。 ValidateCustomer 只是调用这个 validate 方法。但我认为自定义验证器不会被调用,因为客户端脚本会在它检查服务器端之前阻止它。

标签: c# asp.net validation webforms postback


【解决方案1】:

EnableClientScript="False" 添加到所有验证控件

【讨论】:

  • 所以在不删除所有客户端验证的情况下不可能让测试箱回发?
猜你喜欢
  • 1970-01-01
  • 2012-03-07
  • 2011-01-17
  • 2016-11-11
  • 1970-01-01
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
  • 2011-10-07
相关资源
最近更新 更多