C# 修剪ASP.NET Web窗体中的所有用户输入字符串
我正在寻找一种方法来修剪ASP.NET中的所有用户输入,而不调用每个字符串实例。我遇到了MVC。有没有办法在web表单中实现这一点?有哪些选择?作为一个不太理想的选项,是否有办法将其合并到类的set方法中?您可以创建一个自定义的C# 修剪ASP.NET Web窗体中的所有用户输入字符串,c#,asp.net,webforms,C#,Asp.net,Webforms,我正在寻找一种方法来修剪ASP.NET中的所有用户输入,而不调用每个字符串实例。我遇到了MVC。有没有办法在web表单中实现这一点?有哪些选择?作为一个不太理想的选项,是否有办法将其合并到类的set方法中?您可以创建一个自定义的文本框,它总是返回文本的修剪版本: public class CustomTextBox : TextBox { public override string Text { get { return base.Text.Trim(); }
文本框
,它总是返回文本的修剪版本:
public class CustomTextBox : TextBox
{
public override string Text
{
get { return base.Text.Trim(); }
set { base.Text = value; }
}
}
然后,只要在需要此行为的任何地方使用此扩展方法,而不是普通的
文本框。您必须从相应的父级调用此扩展方法,例如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();
}
}
}
公共静态void TrimTextControls(此控件父控件,bool TrimLeading)
{
foreach(类型()的父.GetAllControls()中的文本框txt)
{
如果(引导)
{
txt.Text=txt.Text.Trim();
}
其他的
{
txt.Text=txt.Text.TrimEnd();
}
}
}
下面是一种递归修剪页面(或父控件)中所有文本框的实用方法
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);
}