剪裁 Web 窗体 ASP.NET 所有用户输入字符串
本文关键字:用户 输入 字符串 NET Web 窗体 ASP 剪裁 | 更新日期: 2023-09-27 18:32:52
我正在寻找一种方法来修剪 ASP.NET 中的所有用户输入,而无需在每个字符串实例上调用 Trim()。 我遇到了为MVC扩展DefaultModelBinder的问题。 有没有办法在 Web 表单中做到这一点? 有哪些选项可用? 作为一个不太理想的选择,有没有办法将其合并到类的集合方法中?
您可以创建一个自定义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();
}
}
}