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

本文关键字:用户 输入 字符串 NET Web 窗体 ASP 剪裁 | 更新日期: 2023-09-27 18:32:52

我正在寻找一种方法来修剪 ASP.NET 中的所有用户输入,而无需在每个字符串实例上调用 Trim()。 我遇到了为MVC扩展DefaultModelBinder的问题。 有没有办法在 Web 表单中做到这一点? 有哪些选项可用? 作为一个不太理想的选择,有没有办法将其合并到类的集合方法中?

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

您可以创建一个自定义TextBox,该始终返回文本的修剪版本:

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

然后只需在需要此行为的任何地方使用它而不是正常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);
}

您必须从适当的父级调用此扩展方法,例如 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();
    }
  }
}