标签: customvalidator

如何验证列表框是否为空(客户端)

我正在使用ASP.NET 3.5.我有一个用户必须添加项目的列表框(我已经为此编写了代码).我的要求是必须至少将一个项目添加到列表框中,否则他们无法提交表单.我在页面上有几个其他验证器,它们都写入ValidationSummary控件.我希望这个列表框验证也可以写入Validation Summary控件.任何帮助是极大的赞赏.谢谢.

asp.net validation listbox customvalidator

3
推荐指数
2
解决办法
2万
查看次数

自定义验证器触发,但它不更新ValidationSummary

嗨我正在使用自定义表单字段验证器,似乎自定义验证器正在工作,不允许它继续到下一页,但它不更新验证摘要也不显示星号和标签,我已经变得可见了.我还在同一个字段上有其他验证器,如RequiredFieldValidator.设置了我的ValidationGroup,Text和IsValid也是如此.我甚至在javascript中编写并设置了一个虚拟客户端验证方法,正如一些解决方法所暗示的那样.

这是asp.net中的验证摘要代码

<asp:ValidationSummary ID="ValidatorSummary" runat="server" ValidationGroup="Step2" />
Run Code Online (Sandbox Code Playgroud)

这是自定义验证器和必填字段

<asp:CustomValidator ID="AddressVerification" runat="server" ErrorMessage="Please enter a valid address." Display="Dynamic" ValidationGroup="Step2" OnServerValidate="AddressVerification_ServerValidate" ClientValidationFunction="CustomValidatorDummy" Text="*" Enabled="true" EnableClientScript="true"></asp:CustomValidator>
<asp:RequiredFieldValidator ID="RFValidatorHomeAddress" runat="server" ErrorMessage="Please enter home address." Text="*" Display="Dynamic" ValidationGroup="Step2" ControlToValidate="txtHomeAddress"></asp:RequiredFieldValidator>
Run Code Online (Sandbox Code Playgroud)

这是后面代码中的自定义验证方法

protected void AddressVerification_ServerValidate(object sender, ServerValidateEventArgs e)
{
//lets just say it doesn't validate and sets the IsValid to false
lblUspsValidatorResHomeCity.Visible = true;
lblUspsValidatorResHomeState.Visible = true;
lblUspsValidatorResHomeZip.Visible = true;
e.IsValid = false;
}
Run Code Online (Sandbox Code Playgroud)

请指教,谢谢.

编辑:回答 - 按照bitxwise提到.验证摘要也应放在更新面板中.谢谢!

像这样:

<asp:UpdatePanel ID="UpdatePanelValidationSummaryHome" ChildrenAsTriggers="false" UpdateMode="Conditional"
runat="server">
<ContentTemplate>
    <asp:ValidationSummary ID="AddressHomeValidationSummary" …
Run Code Online (Sandbox Code Playgroud)

c# asp.net validation customvalidator validationsummary

3
推荐指数
1
解决办法
2万
查看次数

基于其他字段的条件验证,C#

我有几种情况需要创建:

1)如果下拉列表具有特定值,则将特定文本框设为必填字段。

2)如果某个特定的文本框包含数据,则使另一个文本框成为必需(如果填写了地址字段,则需要城市,州和邮政编码)

我有从看起来正确的一对CustomValidators调用的代码:

<asp:CustomValidator ID="cvtxt_pat_id" runat="server" 
     OnServerValidate="txt_pat_idValidate" ControlToValidate="txt_pat_id"
     ErrorMessage="Text must be 8 or more characters." Display="Dynamic"/>

protected void txt_pat_idValidate(object sender, ServerValidateEventArgs e)
{
    if (ddl_addl_pat_info.SelectedValue.ToString() == "2")
    {
        e.IsValid = (e.Value.Length > 1);
    }
    else
    {
        e.IsValid = true;
    }
}

<asp:CustomValidator ID="cvtxt_pat_id" runat="server" 
     OnServerValidate="addresspartsValidate" ControlToValidate="txt_city"
     ErrorMessage="Complete address must be entered." Display="Dynamic"/>

protected void addresspartsValidate(object sender, ServerValidateEventArgs e)
{
    if (txt_pat_address.Text.Length > 1)
    {
        e.IsValid = (e.Value.Length > 1);
    }
    else
    {
        e.IsValid = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是据我了解,如果我正在测试的文本框为空,则该框永远不会验证,因此如果它们为空,则不会触发,这使得很难检查必填字段。那么...有什么想法吗?

另外,关于我是否需要同时拥有测试的客户端版本和服务器版本,我的说法相互矛盾。也许在旧版本中是必需的,现在不是吗?

c# validation customvalidator

3
推荐指数
1
解决办法
9146
查看次数

CakePHP 2.1 - 自定义验证规则 - 检查唯一字段值组合

我有几个列(ip,provider_id),我希望值的组合始终是唯一的.因此,我正在尝试构建自定义验证功能.但我有问题抓住二级领域的价值.这是我目前在模型中的代码:

public $validate = array(
   'ip' => array(
      'rule' => array('uniqueClick', 'provider_id'),
      'message' => 'The click is not unique.'
    )
);  

public function uniqueClick ($ip, $field) {

   $count = $this->find('count', array('conditions' => array('ip' => $ip, 'provider_id' => $field)));
   // echo $field;
   return $count == 0;

}
Run Code Online (Sandbox Code Playgroud)

所以问题是当我测试加载到$ field中的值时,它只是'provider_id',一个字符串.我希望它包含'provider_id'字段的值.有没有人知道如何获取该值(以及必要时的所有其他辅助模型字段值)并将其发送到自定义验证函数?

我在CookBook上的阅读和那些讨论类似问题的人似乎认为这个解决方案可行,但不幸的是不适合我.

提前致谢!

validation cakephp unique customvalidator cakephp-2.0

3
推荐指数
1
解决办法
8842
查看次数

在OnServerValidate方法中获取源代码管理

我有一个CustomValidator控件,在OnServerValidate事件中我想设置正在验证的控件的属性.

您可能会认为已验证的控件对象在OnServerValidate事件中可用,但事实并非如此.然后我尝试执行FindControl但似乎无法访问ControlToValidate值.

有人请帮我验证TextBox控件,以便我可以从OnServerValidate事件修改其属性吗?

感谢:D

c# asp.net validation customvalidator

2
推荐指数
1
解决办法
4404
查看次数

CustomValidator - 没有Text属性问题的ErrorMessage属性

我有一个要求,要求自定义验证器.用户希望验证字段旁边有一个红色星号.星号应始终显示 - 表示该字段是必需的(取决于选中/取消选中的复选框).验证摘要中显示的错误消息相当长.我使用了星号的标签,因为控件位于.ascx用户控件中,该控件在多个页面上使用,有时星号应显示,有时则不应显示.因为我不希望错误消息显示在字段旁边而我不想要两个星号,所以我尝试不设置自定义验证器的Text属性.但是,这会导致错误消息显示文本显示的位置.我也尝试通过代码将text属性设置为String.Empty,但也没有用.我在SO,Google或MSDN上找不到任何内容.

我想出的唯一解决方案是将text属性设置为星号,并将forecolor设置为白色,从而有效地使其不可见.

如果没有这种解决方法,有没有办法完成我想做的事情?

提前致谢!

.net customvalidator

2
推荐指数
1
解决办法
1519
查看次数

Grails自定义验证器,获取对字段名称的引用

我正在尝试为属性编写一个通用的自定义验证器,使其通用我需要在闭包内对字段名称的引用,代码如下在config.groovy

grails.gorm.default.constraints = {
nameShared(validator: {val, obj, errors->
        Pattern p = Pattern.compile("[a-zA-Z0-9-]{1,15}")
        Matcher m = p.matcher(val)
        boolean b = m.matches()
        if(!b)
        errors.rejectValue('name', "${obj.class}.name.invalid", "Name is invalid")

    })
Run Code Online (Sandbox Code Playgroud)

在我的域类中

class Student{
  String name

  static constraints = {
       name(shared:'nameShared')
   }
}

class Teacher{
  String firstName
  String lastName

  static constraints = {
     firstName(shared:'nameShared')
  }
}
Run Code Online (Sandbox Code Playgroud)

我想对name和firstName使用相同的验证器,但由于我在验证器中对fieldName进行硬编码,它将始终用于name而不是firstName,所以我想知道是否有任何方式我可以获得对fieldname并使验证器通用,请帮助

grails shared global customvalidator

2
推荐指数
1
解决办法
768
查看次数

Symfony2 - 自定义验证器和依赖注入

我试图使用依赖注入自定义验证器,以便能够使用entityManager.

我按照Symfony示例:依赖注入,但我总是收到此错误消息:

FatalErrorException:错误:在/home/milos/workspace/merrin3/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Validator/ConstraintValidatorFactory.php第68行中找不到类'isdoi'

这是我的课程:

1. IsDOI课程:

    <?php
    namespace Merrin\MainBundle\Validator\Constraints;
    use Symfony\Component\Validator\Constraint;

    /**
     * @Annotation
    */
    class IsDOI extends Constraint
    {
    public $message_publisher_DOI = 'The Publisher DOI abbreviation does not correspond to the DOI you filled in !';
    public $message_journal_DOI = 'No journal found with the DOI you filled in !';
    public $journal;
    public $doiAbbreviation;

     public function validatedBy() {
            return "isdoi";
        }

        public function getTargets()
        {
            return self::CLASS_CONSTRAINT;
        }
    }
Run Code Online (Sandbox Code Playgroud)

2. IsDOIValidator类:

<?php

namespace Merrin\MainBundle\Validator\Constraints;

use Doctrine\ORM\EntityManager;
use Symfony\Component\Validator\Constraint; …
Run Code Online (Sandbox Code Playgroud)

php dependency-injection customvalidator symfony

2
推荐指数
1
解决办法
6597
查看次数

在Angular 2中异步验证表单字段(在HTTP请求之后)

我们的想法是让用户POST表单.并触发API返回的错误,如果用户已经注册,则将电子邮件字段设置为错误.

我使用FormBuilder的反应形式,我尝试在订阅错误捕获器中调用验证器:

构造函数:

this.email = fb.control('', [Validators.required, Validators.pattern(/^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/), SignupComponent.alreadyExist()]);
this.username = fb.control('', [Validators.required, Validators.pattern(/^([A-ZÀ-ÿa-z0-9]{2,})+(?:[ _-][A-ZÀ-ÿa-z0-9]+)*$/)]);

this.userRegisterForm = fb.group({
    email: this.email,
    username: this.username
});
Run Code Online (Sandbox Code Playgroud)

自定义alreadyExist()验证器:

static alreadyExist(alreadyExist: boolean = false): any {

    return (control: FormControl): { [s: string]: boolean } => {

        if(alreadyExist) {
            return { emailAlreadyExist: true }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

}

onSubmit():

this.user.create(newUser)
    .subscribe(
        data => {
            this.router.navigate(['signin']);
        },
        error => {
            if(error.status === 401) {

                // CALL THE VALIDATOR HERE TO SET : FALSE
                SignupComponent.alreadyExist(true);
            }

            this.loading = …
Run Code Online (Sandbox Code Playgroud)

customvalidator formbuilder typescript angular

2
推荐指数
1
解决办法
2864
查看次数

ValidationMessageFor customValidatioMessage参数,始终显示消息,不显眼

我试着向我们求助 Html.ValidationMessageFor(m=>m.MyProperty,"The field is very much required");

但是..我的使用不引人注意我的验证,但由于某种原因,似乎一旦我使用customValidationMessage参数,该属性的不引人注意的验证"中断".

或者用更简单的术语表示......无论是否输入值,都会始终显示验证消息.它根本不会更新/切换.

该属性也用于RadioButtonFor ..所以完整的"代码"是:

@Html.RadioButtonFor(m=>m.Myproperty,"Value 1")
@Html.RadioButtonFor(m=>m.Myproperty,"Value 2")
@Html.ValidationMessageFor(m=>m.MyProperty,"Please select ine of the options")
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

asp.net-mvc message customvalidator radiobuttonfor unobtrusive-validation

1
推荐指数
1
解决办法
2688
查看次数