【发布时间】: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