自动修剪表单输入中的空白

Ant*_*t P 0 c# asp.net-2.0

我有一个包含许多输入的表单,每个表单Trim在处理之前都需要是med.在每次使用值时修剪这些都是费力的 - 而且不是很强大 - 因为每个在表单的代码隐藏中使用它们.

我想为我的每个属性做这样的事情:

private string _surname
public string Surname
{
    get
    {
        return _surname.Trim();
    }
    set
    {
        _surname = value;
    }
}

protected void Page_Load(object sender, EventArgs e)
{
    Surname = txtSurname.Text;
}
Run Code Online (Sandbox Code Playgroud)

尽管如此,这看起来还是相当冗长.特别是对于具有大量输入的表格.也许只是:

private string _txtSurname;

protected void Page_Load(object sender, EventArgs e)
{
    _txtSurname = txtSurname.Text.Trim();
}
Run Code Online (Sandbox Code Playgroud)

但是这与第一个例子没有相同的鲁棒性,如果我在其他地方分配相同的属性,我可能会忘记我需要先修剪.我觉得应该有一个更简洁的方法来处理这个问题.在那儿?

Joh*_*oon 6

更新:扩展方法方法,虽然从可读性的角度来看功能不是很好.直觉上,调用foo.NullSafeTrim();哪里foo = null会抛出一个NullReferenceException.但是,由于它的实现方式,它没有.咩.

我同意增加.Trim()每个吸气剂和制定者都会很费力.特别是当你必须处理所有的空检查以避免NullReferenceExceptions.另一个使代码更紧凑的选项是使用扩展方法.例如:

public static class MyExtensions
{
     public static string NullSafeTrim(this string value)
     {
         if (value != null)
         {
             value = value.Trim();
         }

         return value;
     }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以使用以下模式:

private string _surname;
public string Surname
{
    get { return _surname.NullSafeTrim(); }
    set { _surname = value.NullSafeTrim(); }
}
Run Code Online (Sandbox Code Playgroud)

在使用扩展方法时需要考虑一些因素,您应该可以通过搜索SO来实现这些方法.

或者,您可以在处理值的任何类中执行所有修剪和空检查.