この記事では、Jimmy Bogardが、MVC を実行する際に推奨するベスト プラクティスのいくつかについて説明します。
この記事は概して非常に優れており、(他のブログ投稿での) 彼のアドバイスは概してかなり堅実であることがわかりました。ただし、彼は属性を使用してエンティティをモデルにマップすることを提案しています。
これはどのように
[AutoMap(typeof(Product), typeof(ShowProduct))]
public ActionResult Details(int id)
{
var product = _productRepository.GetById(id);
return View(product);
}
これよりも優れています(私の意見では、コードの実際の意図に関しては、より宣言的です
public ActionResult Details(int id)
{
var product = _productRepository.GetById(id);
var model = Mapper.Map<Product, ShowProduct>(product);
return View(model);
}
その1つの点に加えて、入力に基づいて異なるモデルを返すアクションメソッドや、次のような単純なシナリオなど、これがかなり非現実的なシナリオがあるようです:
[HttpGet]
public ActionResult Index()
{
return List();
}
public ActionResult Until(long id) // "id" is the timestamp
{
return List(id);
}
[NonAction]
internal ActionResult List(long? timestamp = null, int count = 8)
{
IEnumerable<Post> posts = postService.GetLatest(timestamp, count);
PostListModel model = mapper.Map<IEnumerable<Post>, PostListModel>(posts);
return ContextView("List", model);
}
これは実際に良い習慣なのか、それとも正当化されていないだけなのか、そもそも非常に単純なコードの不当な難読化なのか?
AutoMapper がすでに大好きであることに加えて、すばらしいブロガーと見なす人を個人的に攻撃するのではなく、無知からお願いします。