我正在寻找一种方法来修剪 ASP.NET 中的所有用户输入,而无需在每个字符串实例上调用Trim() 。我遇到了扩展 MVC 的 DefaultModelBinder。有没有办法在网络表单中做到这一点?有哪些可用选项?作为一个不太理想的选择,有没有办法将它合并到一个类的 set 方法中?
问问题
3010 次
3 回答
8
您可以创建一个TextBox
始终返回文本的修剪版本的自定义:
public class CustomTextBox : TextBox
{
public override string Text
{
get { return base.Text.Trim(); }
set { base.Text = value; }
}
}
然后在TextBox
需要此行为的任何地方使用它而不是正常的。
于 2013-09-26T17:04:22.517 回答
4
这是递归修剪页面(或父控件)中所有文本框的实用方法。
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);
}
于 2013-09-26T17:24:10.043 回答
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();
}
}
}
于 2013-09-26T17:12:54.847 回答