我见过的文档/网站显示,自定义验证应在去/lib
或/lib/validators
项目的目录.我发现(通过阅读另一篇文章的答案)他们似乎只是在工作config/initializers
.有没有人知道,或者有一个指向官方文档的指针,显示自定义验证器应该存在的位置?
这在我之前没有发生过,但由于某种原因,客户端和服务器端验证事件都没有被触发:
<asp:TextBox ID="TextBoxDTownCity" runat="server" CssClass="contactfield" />
<asp:CustomValidator ID="CustomValidator2" runat="server" EnableClientScript="true"
ErrorMessage="Delivery Town or City required"
ClientValidationFunction="TextBoxDTownCityClient"
ControlToValidate="TextBoxDTownCity"
OnServerValidate="TextBoxDTownCity_Validate" Display="Dynamic" >
</asp:CustomValidator>
Run Code Online (Sandbox Code Playgroud)
服务器端验证事件:
protected void TextBoxDTownCity_Validate(object source, ServerValidateEventArgs args)
{
args.IsValid = false;
}
Run Code Online (Sandbox Code Playgroud)
客户端验证事件:
function TextBoxDCountyClient(sender, args) {
args.IsValid = false;
alert("test");
}
Run Code Online (Sandbox Code Playgroud)
我认为至少Server Side验证会激活但不会.这在我之前从未发生过.这真让我难过.
我查看了输出,ASP.NET正在识别客户端功能:
ASP.NET JavaScript输出:
var ctl00_ctl00_content_content_CustomValidator2 = document.all ? document.all["ctl00_ctl00_content_content_CustomValidator2"] : document.getElementById("ctl00_ctl00_content_content_CustomValidator2");
ctl00_ctl00_content_content_CustomValidator2.controltovalidate = "ctl00_ctl00_content_content_TextBoxDTownCity";
ctl00_ctl00_content_content_CustomValidator2.errormessage = "Delivery Town or City required";
ctl00_ctl00_content_content_CustomValidator2.display = "Dynamic";
ctl00_ctl00_content_content_CustomValidator2.evaluationfunction = "CustomValidatorEvaluateIsValid";
ctl00_ctl00_content_content_CustomValidator2.clientvalidationfunction = "TextBoxDTownCityClient";
Run Code Online (Sandbox Code Playgroud)
渲染自定义验证器:
<span id="ctl00_ctl00_content_content_CustomValidator2" style="color:Red;display:none;">Delivery Town …
Run Code Online (Sandbox Code Playgroud) 以下 pandas 的 DataFrame 未经过 pydantic 验证。这要怎么处理呢?
from pydantic.dataclasses import dataclass
@dataclass
class DataFrames:
dataframe1: pd.DataFrame = None
dataframe2: pd.DataFrame = None
Run Code Online (Sandbox Code Playgroud)
这会引发以下错误:
File "pydantic\validators.py", line 715, in find_validators
RuntimeError: no validator found for <class 'pandas.core.frame.DataFrame'>, see `arbitrary_types_allowed` in Config
Run Code Online (Sandbox Code Playgroud) validation customvalidator pandas python-dataclasses pydantic
我有一个必需的字段验证器和自定义验证器来验证texbox.必需的字段验证器完全触发.我无法正确启动自定义验证器?
<asp:TextBox ID="txtPRI" runat="server" Width="295" /><br />
<asp:RequiredFieldValidator display="Dynamic" CssClass="leftAlign" SetFocusOnError="true" runat="server" controltovalidate="txtPRI" errormessage="Please enter your PRI" />
<asp:CustomValidator runat="server" id="cusCustom" controltovalidate="txtPRI" onservervalidate="cusCustom_ServerValidate" Enabled="true" ValidateEmptyText="true" display="Dynamic" CssClass="leftAlign" SetFocusOnError="true" errormessage="The text must be exactly 8 characters long!" />
Run Code Online (Sandbox Code Playgroud)
代码背后
protected void cusCustom_ServerValidate(object sender, ServerValidateEventArgs e)
{
Response.Write("firing - test");
Response.End();
if (e.Value.Length == 8)
e.IsValid = true;
else
e.IsValid = false;
}
Run Code Online (Sandbox Code Playgroud) 我正在使用自定义验证器来调用javascript函数进行验证.我的问题是我需要能够动态更改错误消息.这是代码:
<asp:CustomValidator ID="CustomValidator1" runat="server" ClientValidationFunction="fcnValid1"
ErrorMessage="" Display="None" ValidateEmptyText="True">
</asp:CustomValidator>
<asp:ValidationSummary ID="ValidationSummary1" runat="server" DisplayMode="List" ShowMessageBox="True" ShowSummary="False" />
function fcnValid(source, args) {
var Status = document.getElementById("<%=ddlStatus.ClientID%>").value
if (Status == "In Underwriting") {
if (document.getElementById("<%=txtRequestor.ClientID%>").value == "") {
//sender.errormessage = "Test1"
//sender.innerHTML = "Test2";
document.getElementById("<%=txtRequestor.ClientID%>").focus();
args.IsValid = false;
}
}
}
Run Code Online (Sandbox Code Playgroud) 我以前遇到过这个问题,但从未完全解决过.我有一个包含多个验证器和CustomValidator的表单.
<asp:Label ID="lblMemberNum" runat="server" Text="Membership #:" CssClass="LabelMedium" ></asp:Label>
<asp:TextBox ID="txtMemberNum" runat="server" CssClass="TextBox" ></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvMemberNum" SetFocusOnError="True" runat="server"
ControlToValidate="txtMemberNum" ErrorMessage="[ Membership # ] is required"
CssClass="ValidationMessage" Display="Dynamic" >*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="revMemberNum" Display="Dynamic" runat="server"
ControlToValidate="txtMemberNum" CssClass="ValidationMessage"
ErrorMessage="[ Membership # ] can only contain letters"
ValidationExpression="^([a-zA-Z\d]+)$" >*</asp:RegularExpressionValidator>
<asp:CustomValidator ID="cvMemberNum" runat="server"
CssClass="ValidationMessage" Display="Dynamic"
ControlToValidate="txtMemberNum" ValidateEmptyText="false"
OnServerValidate="cvMemberNum_Validate"
ErrorMessage="This membership number is already registered">*</asp:CustomValidator>
<asp:ValidationSummary ID="ValidationSummary1" runat="server"
CssClass="ValidationMessage"
ShowMessageBox="True" ShowSummary="False" />
Run Code Online (Sandbox Code Playgroud)
在服务器端:
protected void cvMemberNum_Validate(object source, ServerValidateEventArgs args)
{
try
{
args.IsValid = (!CampaignRegistration.IsMemberRegistered(args.Value));
}
catch
{ …
Run Code Online (Sandbox Code Playgroud) 可以说我有这个代码.
<asp:TextBox ID="TextBox1" runat="server" />
<asp:CustomValidator ID="CustomValidator1" runat="server"
ClientValidationFunction="ValidationFunction1"
ControlToValidate="TextBox1"
Display="Dynamic" />
Run Code Online (Sandbox Code Playgroud)
还有一个validationFunction:
function ValidationFunction1(sender, args)
{
}
Run Code Online (Sandbox Code Playgroud)
而且我想知道,如果在函数内部我可以让Control来验证类似的东西:
var v = sender.ControlToValidate;
Run Code Online (Sandbox Code Playgroud) 我使用ASP.NET并有一个Button和一个CustomValidator,它必须验证按钮.
<asp:Button ID="saveButton" runat="server" OnClick="SaveButton_Click" Text="Speichern"
CausesValidation="true"/>
<asp:CustomValidator runat="server" ID="saveCValidator" Display="Static"
OnServerValidate="EditPriceCValidator_ServerValidate"
ControlToValidate="saveButton" ErrorMessage="">
Run Code Online (Sandbox Code Playgroud)
加载页面时,收到错误消息:
"无法验证由'saveCValidator'的ControlToValidate属性引用的控件'saveButton'."
可能是什么问题?我在网上搜索,但这没有多大帮助.
我CustomValidator
在表格上写了一个.我没有设置它的ControlToValidate
财产.在它的ServerValidate
事件中,我写了以下内容:
protected void CustomValidator1_ServerValidate(object source,
ServerValidateEventArgs args)
{
args.IsValid = false;
}
Run Code Online (Sandbox Code Playgroud)
我给这个方法设了一个断点,但似乎从来没有达到这一点.但如果我在另一种形式上这样做,它就像一个魅力.
ValidationGroup
两个按钮和属性CustomValidator
是相同的CustomValidator
,仍然无法正常工作.似乎有形式的东西.我只是CustomValidator
在表单上添加一个并且除了设置其ServerValidate
事件方法之外不要触及它的任何属性.
编辑:这是aspx部分:
<asp:CustomValidator ID="CustomValidator2" runat="server"
ErrorMessage="This is a test"
onservervalidate="CustomValidator1_ServerValidate"
ValidationGroup="PA"></asp:CustomValidator>
<asp:Button ID="btnPensionersOK" runat="server" Text="OK" Width="75px"
onclick="Button1_Click" ValidationGroup="PA" />
Run Code Online (Sandbox Code Playgroud) 我在自定义约束验证器中有bean自动装配的问题.使用Spring的LocalValidatorFactoryBean不会给出约束验证器实例.JSR-303提供程序是hibernate-validator 4.2.0.Final.
Spring配置摘录:
<!-- JSR 303 validation -->
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
<bean class="org.springframework.validation.beanvalidation.MethodValidationPostProcessor"/>
Run Code Online (Sandbox Code Playgroud)
自定义约束验证器:
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.springframework.beans.factory.annotation.Autowired;
import com.model.Subject;
import com.services.SomeTypeService;
public class ReadOnlyValidator implements ConstraintValidator<ReadOnly, String> {
@Autowired
private SomeTypeService someTypeService;
@Override
public void initialize(ReadOnly constraintAnnotation) { }
@Override
public boolean isValid(String type, ConstraintValidatorContext context) {
try {
if (null != type) {
return !someTypeService.isReadonly(type);
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
注解:
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.*;
import …
Run Code Online (Sandbox Code Playgroud) customvalidator ×10
asp.net ×7
validation ×6
c# ×4
.net ×1
ajax ×1
javascript ×1
pandas ×1
pydantic ×1
spring ×1