C# 如何验证文本框输入

C# 如何验证文本框输入,c#,asp.net,C#,Asp.net,如果输入是CASP.NET中“A”“G”“C”“T”的数组isValid=true,否则isValid=false,如何在自定义验证器中生成表达式?对于windows窗体应用程序,我制作了这个,我需要类似的东西 private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { e.Handled = char.IsLetter(e.KeyChar) && ((e.KeyChar == 65)

如果输入是CASP.NET中“A”“G”“C”“T”的数组isValid=true,否则isValid=false,如何在自定义验证器中生成表达式?对于windows窗体应用程序,我制作了这个,我需要类似的东西

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
  e.Handled = 
      char.IsLetter(e.KeyChar) && ((e.KeyChar == 65) || (e.KeyChar == 67) || 
                   (e.KeyChar == 71) || (e.KeyChar == 84) || (e.KeyChar == 97) || 
                   (e.KeyChar == 99) || (e.KeyChar == 103) || (e.KeyChar == 116)) ||
                   (e.KeyChar == 8) ? false : true;   
} 
为了验证,我有这个

protected void CustomValidator1_ServerValidate1(object source, ServerValidateEventArgs args)
    {
        Match validate = Regex.Match(TextBox1.ToString(), "[AGCT]");
        if (validate.Success)
            {
                args.IsValid = true;
            }
            else args.IsValid = false;
        }
没问题

在ASP.Net中,您将使用Javascript处理此验证。因此,您的输入元素将声明如下:

@Html.TextBoxFor(m => m.MyField)
然后,您将使用Javascript通过处理keyup事件来执行验证

e、 preventDefault相当于在WinForms中处理的e

document.getElementById('@Html.IdFor(m => m.MyField)').onkeyup = function (e) {
    if(~[65, 67, 71, 84, 97, 99, 103, 116, 8].indexOf(e.keyCode || e.which)) {
        e.preventDefault();
        return;
    }
};

祝你好运

如果您可以在自定义验证器上显示现有进度的一部分,那就太棒了。ASP.NET事件处理与windows应用程序事件处理不同。您需要使用客户端脚本(如JavaScript和JQuery)来处理此问题。在Asp.Net中,您应该为此使用buildin validator控件。RegularExpressionValidator非常适合这一点。另外,我不知道你为什么被否决,你的问题是完全合法的。这个问题是关于Asp.Net Web表单而不是Mvc的。@Esko,虽然他目前的方法暗示了这一点,但没有明确说明。此外,您可以使用没有MVC的Razor页面;这称为ASP.Net网页。