修剪ASP.NET Web窗体中的所有用户输入字符串

时间:2013-09-26 16:59:47

标签: c# asp.net webforms

我正在寻找一种方法来修剪ASP.NET中的所有用户输入而不在每个字符串实例上调用Trim()。我遇到了extending the DefaultModelBinder的MVC。有没有办法在Web表单中执行此操作?有哪些选择?作为一个不太理想的选择,有没有办法将它合并到类的set方法中?

3 个答案:

答案 0 :(得分:8)

您可以创建自定义TextBox,它始终返回文本的剪裁版本:

public class CustomTextBox : TextBox
{
    public override string Text
    {
        get { return base.Text.Trim(); }
        set { base.Text = value; }
    }
}

然后在您需要此行为的任何地方使用此代替正常TextBox

答案 1 :(得分:4)

以下是以递归方式修剪页面(或父控件)中所有TextBox的实用程序方法。

public static void TrimTextBoxesRecursive(Control root)
{
    foreach (Control control in root.Controls)
    {
        if (control is TextBox)
        {
            var textbox = control as TextBox;
            textbox.Text = textbox.Text.Trim();
        }
        else
        {
            TrimTextBoxesRecursive(control);
        }
    }
}

用法

protected void Button1_Click(object sender, EventArgs e)
{
    TrimTextBoxesRecursive(Page);
}

答案 2 :(得分:1)

您必须从相应的父级调用此扩展方法,例如Page.TrimTextControls

public static void TrimTextControls(this Control parent, bool TrimLeading)
{
  foreach (TextBox txt in parent.GetAllControls().OfType<TextBox>())
  {
    if (TrimLeading)
    {
      txt.Text = txt.Text.Trim();
    }
    else
    {
      txt.Text = txt.Text.TrimEnd();
    }
  }
}