2011-07-04 42 views
0

This MVC tutorial分離表明,使dropdownlists像這樣:MVC選擇列表的使用顧慮

// 
// POST: /StoreManager/Create 
[HttpPost] 
public ActionResult Create(Album album) 
{ 
    if (ModelState.IsValid) 
    { 
     db.Albums.Add(album); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 
    ViewBag.GenreId = new SelectList(db.Genres, "GenreId", 
"Name", album.GenreId); 
    ViewBag.ArtistId = new SelectList(db.Artists, "ArtistId", 
"Name", album.ArtistId); 
    return View(album); 
} 

我是新來的MVC,但在我看來,這不是關注一個很好的分離,因爲它使數據庫調用在控制器內。它是否正確?

有沒有更好的方法?

回答

0

這取決於您決定項目的複雜程度。項目越大 - 最不可能採取這種方法。我會盡量使用Repository模式來返回您的數據。其次,根據上面的例子,它使用ViewBag - 這也不是強烈推薦。當然,它的'酷' - 但通常這個數據你想在一個強類型視圖模型,代表數據去視圖,而不是動態魔術的ViewBag,這依賴於你不要忘記字段名稱正確使用。

0

我不認爲只要查詢數據庫,進行數據庫調用就一定是件壞事。 :)

當然通常的「這取決於」的答案適用於:項目生命週期,複雜性等

的大小但對於查詢一個輕量級的查詢機制很好地過癮。

您可能感興趣的看着命令/查詢職責隔離(CQRS)—,但如果你做,你不熟悉它,請注意不要與事件採購混淆,因爲在其最基本的形式CQRS其實是相當一個簡單的想法:將讀取(查詢)與任何域操作分開。

進行操縱數據狀態的數據庫調用並不是那麼明智。