Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET验证动态创建的字段_C#_Javascript_Asp.net_Dynamic_Validation - Fatal编程技术网

C# .NET验证动态创建的字段

C# .NET验证动态创建的字段,c#,javascript,asp.net,dynamic,validation,C#,Javascript,Asp.net,Dynamic,Validation,我正在处理一个需要动态添加多个字段的页面。我基本上已经完成了这项工作,但由于验证,我被耽搁了。 问题是表单字段需要特定的正则表达式验证,当只有一个输入时,这种验证工作得很好。现在,当javascript动态创建字段时,它只验证第一个字段 我在谷歌上搜索过,但没有找到任何东西,目前我唯一的想法是将regex值从设置文件传递到javascript,并在用户端进行验证,但我将无法使用Page.IsValid() 所以我的问题是-是否可以将服务器端验证添加到由javascript动态创建的字段中,以及如

我正在处理一个需要动态添加多个字段的页面。我基本上已经完成了这项工作,但由于验证,我被耽搁了。
问题是表单字段需要特定的正则表达式验证,当只有一个输入时,这种验证工作得很好。现在,当javascript动态创建字段时,它只验证第一个字段

我在谷歌上搜索过,但没有找到任何东西,目前我唯一的想法是将regex值从设置文件传递到javascript,并在用户端进行验证,但我将无法使用
Page.IsValid()

所以我的问题是-是否可以将服务器端验证添加到由javascript动态创建的字段中,以及如何添加


谢谢大家!

如果需要服务器端验证和客户端验证,则需要创建Input type=“text”作为runat=“Server”

示例:-

使用Jquery使用Regex进行验证

$("input.alphanum").bind("keyup", function(e) {
    this.value = this.value.replace(/[^a-zA-Z0-9]/g, '');
});

简而言之,这是可能的,但非常困难,解决方案非常脆弱,需要大量维护

从理论上讲,如果您能够计算出使用正则表达式验证器时ASP.NET生成的JS代码,然后对其进行反向工程,就可以做到这一点。这里的主要问题是,新字段是在客户端而不是服务器端创建的

如果您可以更新页面,以便在服务器端动态创建新的文本框,那么您所要做的就是在OnInit方法中创建新的文本框和新的验证器,这将起作用

下面是它的样子

protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);

        //set the appropriate conditions for your solution
        if (true)
        {
            //create text box
            TextBox txtNewField = new TextBox();
            txtNewField.ID = "txtNewField";

            //create and initialize validator
            RegularExpressionValidator regexR1 = new RegularExpressionValidator();

            regexR1.ValidationExpression = "set the regex here";
            regexR1.ControlToValidate = txtNewField.ID;
            regexR1.ErrorMessage = "you are doing something wrong";

            //add both of these to page wehre needed. 
            //I assume there is a panel control where you are adding these 
            //but you can customize it more
            pnlFields.Controls.Add(txtNewField);
            pnlFields.Controls.Add(regexR1);
        }
    }

通过javascript创建的字段类型为input type=“text”,如果您想要服务器端验证,您必须向runat=“server”提供tagu。请共享用于创建字段的代码谢谢回答,但是我如何将字段添加到.ascx.cs文件中?此设置还强制我在.ascx文件中设置正则表达式模式,但它通过字段的ID调用该字段,该ID针对每个新字段进行了更改(因为ID需要唯一,并且AFAIK.NET不会验证具有相同ID的字段)。ID的创建方式如下
field1,field2,field3,fieldn
尝试相同您可以在客户端regex中尝试相同的方法,问题是:regularexpressionvalidator仅为asp:TextBox,请尝试类似的方法。这只是客户端,验证在用户浏览器中进行,而我希望在服务器端完成验证。regex您可以在客户端进行验证,waht是您需要在服务器端验证的另一个事件,请告诉我您需要在服务器端执行的操作,以便我们可以为您提供解决方法谢谢!我只是在研究如何做到这一点。我会试试这个。