0

アプリケーションにタブがあり、クリックすると、ユーザーの詳細が (プレースホルダー HTML 属性を使用して) 編集可能なテキスト ボックス内に表示されます。ユーザーは、それらを表示するだけでなく、必要な詳細を編集することもできます。

ここで私の質問は、このシナリオ用にビュー モデル クラスを作成する必要があるか、それとも実際のアカウント モデル クラスを使用する必要があるかということです。Account モデル クラスの「一部」のプロパティのみを必要とするため、View Model クラスを作成する必要があると思いますが、そうする場合、どのように「編集可能」にし、その後、編集したプロパティをマップしますか (存在する場合)。 ) 実際のアカウント モデル クラスに?

また、View Model クラスを作成する必要がある場合、正確にどこに View Model クラスを保存する必要があるか教えてください。

4

1 に答える 1

0

このシナリオのビュー モデル クラスを作成する必要がありますか、それとも実際のアカウント モデル クラスを使用する必要がありますか?

はい、必要なアクションを表すモデルを作成することをお勧めします。これにより、投稿の過不足を防ぐことができます。したがって、ユーザーが作業することが期待されるプロパティで作業します。たとえばAccountModel、多くのプロパティを持つ があり、1 つのアクションで 10 個のaddプロパティと 1 つのアクションで 5 つのプロパティだけを操作する必要があるedit場合、2 つの ViewModel を作成します。

// your model or entity
public class AccountModel {
    // the list of properties goes here
}
// your view models
public class CreateAccountModel {
    public string Username {get;set;}    
    public string Password {get;set;}
    public string Phone {get;set;}
}
// this model is for the scenario 
// where you want users to edit their basic info
// but not the password (e.g. you have a separate
// functionality for changing the password)
public class EditAccountModel {
    public string Username {get;set;}    
    public string Phone {get;set;}
}

ビューモデルを実際のモデルまたはエンティティにマッピングするには、マッパー ツールを使用するか、自分で行うことができます (面倒ですが、小さなモデルのオプションです)。手順は次のとおりです。

  • 投稿からモデル/エンティティを受け取ります
  • データベースからエンティティをクエリします
  • ビューモデルからモデル/エンティティに値をコピーします
  • モデル/エンティティをデータベースに保存します

ビューモデルクラスを正確にどこに保存する必要がありますか

Models作成されたフォルダーの下の MVC プロジェクトに含めることができます。これは実際には好みであり、特にアプリケーションのレイヤー化を開始する場合は、標準的な方法はありません。より意味のある場所に置きます。

于 2013-04-09T06:15:27.243 に答える