0

基本的にIEnumerable(Thing)タイプのモデルを受け取っている「リスト」ビューがあります。私は物事を制御することはできません。それは外部です。

それはほぼ問題ありませんでした。'Thing'のプロパティの1つは、フラグの列挙型です。ビューでのこのプロパティのフォーマットを改善したいと思います。そのためのいくつかの戦略を読みました。私の計画は、フォーマットについてよく知っているViewModelを作成することでした。

IEnumerable(Thing)からIEnumerable(ViewThing)を直接作成する方法があるかどうか知りたいのですが。

明らかな方法は、IEnumerable of Thingsを反復処理することです。ここで、ThingごとにViewThingを作成し、Thingのデータを詰め込んで、IEnumerableofViewThingsを作成します。

しかし、バックアップとして、表示用のフラグのフォーマットを処理するためのよりスマートな方法にも興味があります。

4

1 に答える 1

1

AutoMapperを使用して、ドメイン モデルとビュー モデルをマッピングできます。との間のマッピングを定義すると、AutoMapper がこれらのオブジェクトのコレクションのマッピングを処理して、反復する必要がなくなるという考え方ThingですThingViewModel

public ActionResult Foo()
{
    IEnumerable<Thing> things = ... get the things from whererver you are getting them
    IEnumerable<ThingViewModel> thingViewModels = Mapper.Map<IEnumerable<Thing>, IEnumerable<ThingViewModel>>(things);
    return View(thingViewModels);
}

あとは、 aThingとの間のマッピングを定義するだけThingViewModelです。

Mapper
    .CreateMap<Thing, ThingViewModel>().
    .ForMember(
        dest => dest.SomeProperty,
        opt => opt.MapFrom(src => ... map from the enum property)
    )
于 2012-07-03T21:22:09.137 に答える