0

多数の入力を含むフォームがあり、それぞれをTrim処理する前に修正する必要があります。それぞれがフォームのコードビハインド内の多数の場所で使用されるため、値を使用するたびにこれらをトリミングするのは面倒であり、あまり堅牢ではありません。

私は自分のプロパティごとに次のようなことを考えています:

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

protected void Page_Load(object sender, EventArgs e)
{
    Surname = txtSurname.Text;
}

ただし、これでもかなり冗長に思えます。特に、はるかに多くの入力があるフォームの場合。おそらく単純に:

private string _txtSurname;

protected void Page_Load(object sender, EventArgs e)
{
    _txtSurname = txtSurname.Text.Trim();
}

しかし、これは最初の例と同じ堅牢性を持っていません。別の場所で同じプロパティに割り当てると、最初にトリミングする必要があることを忘れる可能性があります。これを処理するもっと簡潔な方法があるべきだと思います。ある?

4

5 に答える 5

1

空の get は機能せず、設定は実際にはバッキング フィールドに設定されませんでした!

private string _txtSurname
{
   get;  // problematic!
   set { return value.Trim();}
}

以下を試してください:

public string TxtSurname
{
   get { return _txtSurname;}
   set { _txtSurname=value.Trim();}
}

ページの読み込みでは、プライベート メンバーでは機能せず、代わりにプロパティを使用します

protected void Page_Load(object sender, EventArgs e)
{
    TxtSurname = SomeText.Trim();
}
于 2013-04-23T11:31:32.493 に答える
0

プライベート変数を作成して、フォームのプロパティを完全に入力してみませんか。次に、プロパティの get と set の両方で trim() 機能を提供し、フィールドを直接使用する代わりに、プロパティを使用してフォームの値を読み取って割り当てることができます。

private string _txtSurname;

public string TxtSurname
{
    get
    {
        return string.IsNullOrWhiteSpace(_txtSurname) ? string.Empty : _txtSurname.Trim();
    }
    set
    {
        _txtSurname = value.Trim();
    }
}

そうすれば、値を設定または取得せずに、他の場所でトリミングされることを心配する必要はありません

protected void Page_Load(object sender, EventArgs e)
{
    this.TxtSurname = txtSurname.Text();
}

フォーム プロパティを独自のクラスに移動し、フィールド値を非公開にし、プロパティを公開した場合 (ビュー モデルを使用する場所を開発する場合など)、フィールド値に直接割り当てることができず、トリムされていない値。もちろん、これを行う場合は、トリミングを行うためのセットのみが必要です。

于 2013-04-23T11:48:09.373 に答える