ASP.NET MVC 中 ViewData 和 ViewBag 的異同

  • 30
  • 0
  • MVC
  • 2023-05-30

ASP.NET MVC 中 ViewData 和 ViewBag 的異同

資料來源 https://dotnettutorials.net/lesson/asp-dot-net-mvc-viewbag/

在內部,ViewBag 是 ViewData 的包裝器。因此,如果 ViewBag 屬性名稱與 ViewData 的鍵匹配,它將拋出運行時異常。

ASP.NET MVC 中 ViewData 和 ViewBag 的異同
  1. 在 ASP.NET MVC 中,我們可以同時使用 ViewData 和 ViewBag 將數據從 Controller 操作方法傳遞到 View。
  2. ViewData 是一個字典對象,而 ViewBag 是一個動態屬性。ViewData 和 ViewBag 都用於在 ASP.NET MVC 中創建鬆散類型的視圖。
  3. 在 ViewData 中,我們使用字符串作為鍵來存儲和檢索數據,而在 ViewBag 中,我們使用動態屬性來存儲和檢索數據。
  4. ViewData 需要對複雜數據類型進行類型轉換,並檢查空值以避免任何異常,而 ViewBag 不需要對複雜數據類型進行任何類型轉換。
  5. ViewData 鍵和 ViewBag 動態屬性僅在運行時解析。因此,兩者都不提供編譯時錯誤檢查,因此,我們將得不到任何情報支持。
  6. 因此,如果我們拼錯了鍵名或動態屬性名,那麼我們不會得到任何編譯時錯誤,而只會在運行時才知道錯誤。這就是我們很少在應用程序中使用 ViewBag 和 ViewData 的原因。

在 ASP.NET MVC Framework 中將數據從控制器操作方法傳遞到視圖的最佳和首選方法是使用強類型模型。強類型模型提供編譯時錯誤檢查,這反過來又為我們提供了智能支持。