2011-03-04 113 views
1

我在我的視圖中使用(asp mvc3/razor cshtml)引用請求對象(eg, @Request.Params["Name"])。你認爲這是一種非常糟糕的做法嗎?我是否應該將控制器Request.Params ["Name"]中的值重寫爲ViewBag.Name,然後在視圖(@ViewBag.Name)中使用它?asp.net mvc3 /剃刀視圖最佳實踐

回答

0

我應該重寫控制器的值Request.Params [「Name」]到ViewBag.Name,然後在視圖(@ ViewBag.Name)中使用它?

是的。如果「名稱」不存在,您將避免運行時錯誤。

IDE不會警告您要使用以下代碼拋出NullReferenceException

@Request.Params["Fake"].ToString() 

當然,您還必須注意ViewBag.Fake也爲空。

1

最佳做法是使用模型類。模型類的實例在您的控制器中創建或更新。然後控制器顯示一個強類型的視圖。

所以我會避免直接訪問視圖中的請求以及使用視圖包。

+0

是的,這是優惠的。 – JustinStolle 2011-03-04 09:03:16

0

我喜歡使用viewbag存儲與模型無關的事物,例如,如果我有一個包含位置的下拉列表。我喜歡僅存儲模型上選定位置的id和viewbag中的位置,因爲不需要創建聯繫人。我認爲這是視圖包的目的。

對我來說,模型在業務操作中使用,例如,如果我有使用NewCustomerModel,我不想褻瀆我的東西像IList<CustomerType>和A SelectedCustomerTypeId屬性模型客戶創造視圖袋或屬性。我只想第二個是用於創建客戶的imma。