0

次のようにすべての定義を移動しています。

 @(Model.Store.EmployeeType.Name == "Manager" ? Model.Store.HQ.Manager.DisplayName : Model.Store.Manager.DisplayName )

私のビューからviewModelへ:

public class ManagerViewModel 
{
    public string Manager {get;set;}
}

そしてコントローラーでそれらを定義します:

var viewModel = new ManagerViewModel();

viewModel.Manager = Model.Store.EmployeeType.Name == "Manager" ? Model.Store.HQ.Manager.DisplayName : Model.Store.Manager.DisplayName;

return View(viewModel);

今、私のビューでこれを行うことができます:

@Model.Manager

私の質問は - これはスキニーコントローラーのベストプラクティスに違反していますか? この種の処理が必要なフィールドが約 30 あるため、コントローラーはかなり大きくなります。フィールドごとに新しいプロパティを作成しています。

4

1 に答える 1

2

時期尚早の最適化についてあまり心配しないでください。あなたはここで正しい道を進んでおり、あまり心配する必要はないと思います。

「スキニー」コントローラーが本当に心配な場合は、コンストラクター内から ViewModel を設定できます。

public class ManagerViewModel 
{

    public ManagerViewModel(ManagerModel model){
        // initialize in here
        this.Manager = model.Store.EmployeeType.Name == "Manager" ? model.Store.HQ.Manager.DisplayName : model.Store.Manager.DisplayName;
    }

    public string Manager {get;set;}
}
var viewModel = new ManagerViewModel(model);
return View(viewModel);
于 2013-01-25T04:49:03.833 に答える