0

特定のビューで、同じタイプの 2 つの異なるオブジェクトを持つことができるシナリオがあります[Customer]。最初のものは と呼ばれCustomer、もう 1 つは と呼ばれCustomerApproveます。後者には、承認される顧客データの変更が含まれています。

オブジェクトが塗りつぶされている場合CustomerApproveは、テキストボックスにその値を含めたいと思います。それ以外の場合は、通常のCustomerオブジェクト値を使用します。

これを達成するために2つの方法を考えました。

  1. @value 初期化子とインライン IF ステートメントを使用する

    Html.TextBoxFor(m => Customer.City, new { @Value = somecondition ? CustomerApprove.City : Customer.City })

  2. モデルのメソッドを呼び出して、使用するオブジェクトを決定します。

    Html.TextBoxFor(m => Customer.City, new { @Value = Model.SomeMethodToGetTheValue() })

どちらを使用するのがより良いアプローチですか、または他の提案はありますか?

4

2 に答える 2

4

ビューモデルを使用し、コントローラーに対応するプロパティを設定して、ビューで次のことが簡単にできるようにすることをお勧めします。

@Html.TextBoxFor(x => x.CustomerCity)

モデルの値に基づくコントローラー アクションでは、CustomerCityビュー モデル プロパティをそれぞれ設定します。

于 2011-04-28T09:07:29.990 に答える
1

Customer と CustomerApproved の両方の View モデルを作成するのはどうですか。ViewModel はいくつかの一般的なプロパティ (City など) を公開し、代わりにコントローラーから ViewModel を返すだけです。私はそれらの線に沿って何かを考えています:

public class CustomerViewModel
{
    public CustomerViewModel(Customer customer) 
    { 
        this.City = customer.City;
    }

    public CustomerViewModel(CustomerApprove customerApprove)
    {
        this.City = customerApprove.City;
    }

    public object City { get; set; }
}
于 2011-04-28T09:08:24.073 に答える