2011-03-04 124 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。