C# 如何验证动态文本框控件

C# 如何验证动态文本框控件,c#,asp.net,validation,dynamic,C#,Asp.net,Validation,Dynamic,我有一个动态创建的文本框作为ex for(int i = 0; i < 4; i++) { TextBox txtControl = new TextBox(); txtControl.ID = "txt" + i; txtControl.AutoPostBack = true; txtControl.TextChanged += txtControl_TextChanged; } 事件txtControl_TextChanged正在触发,但如果传递了非

我有一个动态创建的文本框作为ex

for(int i = 0; i < 4; i++)
{
    TextBox txtControl = new TextBox();
    txtControl.ID = "txt" + i;
    txtControl.AutoPostBack = true;
    txtControl.TextChanged += txtControl_TextChanged;
} 
事件txtControl_TextChanged正在触发,但如果传递了非整数,则不会引发错误消息

我的问题是

如何验证输入是整数还是非整数 在这个例子中,我直接给文本框id,我如何传递它 动态地
现在,因为您已经将jQuery标记为这个问题,所以我为您的问题提供了一个jQuery解决方案

我正在验证文本框是否仅用于整数输入

按如下方式更改代码:

for(int i = 0; i < 4; i++)
{
    TextBox txtControl = new TextBox();
    txtControl.ID = "txt" + i;
    txtControl.cssClass = "validate"
} 
将以下脚本标记添加到前端:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<script type="text/javascript">
    $(document).ready(function () {
        $(".validate").keypress(function (e) {
            if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57 || e.which == 46)) {
                return false;
            }
        });
    });
</script>
小提琴:
上述函数不允许文本输入。

如果客户端验证足够,您可以使用javascript处理验证。或者像下面这样的服务器端验证,而不使用

更新:

由于txtControl_TextChanged是为每个动态文本框注册的事件,因此它将在相应事件发生时触发。因此,从发送方我们可以很容易地验证文本框,如代码段中所述。例如,TextBox txtBox=发送方作为TextBox

您也可以使用自己的方法,类似于:

void txtControl_TextChanged(object sender, EventArgs e)
{
    Log = new StringBuilder();
    TextBox txtBox = sender as  TextBox; 
    CompareValidator validateTextBox = new CompareValidator();
    validateTextBox.Operator = ValidationCompareOperator.DataTypeCheck;
    validateTextBox.Type = ValidationDataType.Integer;
    validateTextBox.ControlToValidate = txtBox ;
    string Message = validateTextBoxNumber.ErrorMessage;
 }
请这样做: 1在页面中编写下面的脚本函数,如下所示

$(".numeric").bind("keypress", function (event) {
        if (event.charCode != 0) {
            var regex = new RegExp("^[0-9]+$");
            var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
            if (!regex.test(key)) {
                event.preventDefault();
                return false;
            }
        }
    });
步骤2为textbox添加css类。像

<input type="text" id="textboxid" class="numeric" />

因此,这将只允许数值

客户端验证或服务器端验证?那么为什么jquery标记在这里。。这没用!从您的代码中,我看到您的CompareValidator对象是validateTextBoxNumber,但无论您在哪里使用validateTextBox,它都是一个打字错误吗?抱歉,这只是一个错误,请立即从您的文本框中删除文本更改事件。同时删除autopostback=true。您不需要使用我的解决方案进行回发。只需在前端文件的脚本标记中添加上述代码。验证代码隐藏中的整数值不是一种有效的做法,因为这将在每次更改文本时提供回发。客户端脚本是验证的最佳解决方案我正在生成控件代码,我的文本框id彼此不同。因此必须通过发送文本框id@Rajan GoswamiNo问题动态调用。。。为所有动态创建的文本框分配一个公共类。您可以使用txt.CssClass=validate来完成此操作。其余的将由我修改的代码处理。请验证。你能提供一个示例代码或fiddle bcoz吗?我已经试过了,但不起作用@Rajan GoswamiI wan txtControl是动态生成的,我如何才能得到一个特定的texbox@un luckyI即使它是一个点,我甚至想要接受它。因为我之前没有提到它是不允许的,应该怎么做才能接受dot@un lucky
$(".numeric").bind("keypress", function (event) {
        if (event.charCode != 0) {
            var regex = new RegExp("^[0-9]+$");
            var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
            if (!regex.test(key)) {
                event.preventDefault();
                return false;
            }
        }
    });
<input type="text" id="textboxid" class="numeric" />