【问题标题】:asp.net mvc3 / razor view best practicesasp.net mvc3/razor 查看最佳实践
【发布时间】:2011-03-04 06:33:32
【问题描述】:
我在我的观点中使用(asp mvc3/razor cshtml) 对请求对象(eg, @Request.Params["Name"]) 的引用。你认为这是一个非常糟糕的做法吗?我是否应该将控制器Request.Params ["Name"] 中的值重写为ViewBag.Name,然后在视图(@ViewBag.Name) 中使用它?
【问题讨论】:
标签:
asp.net
asp.net-mvc-3
view
【解决方案1】:
最佳实践是使用模型类。在您的控制器中创建或更新模型类的实例。然后控制器显示一个强类型视图。
所以我会避免从视图直接访问请求以及使用视图包。
【解决方案2】:
我是否应该将控制器 Request.Params ["Name"] 中的值重写为 ViewBag.Name,然后在视图中使用它 (@ViewBag.Name)?
是的。如果“名称”不存在,您将避免运行时错误。
IDE 不会警告您NullReferenceException 将使用以下代码抛出。
@Request.Params["Fake"].ToString()
当然,您也必须小心 ViewBag.Fake 是否为空。
【解决方案3】:
我喜欢使用 viewbag 来存储与模型无关的东西,例如,如果我有一个包含位置的下拉列表。我喜欢只存储模型上所选位置的 ID 和视图袋中的位置,因为不需要创建联系人。我认为这就是 viewbag 的目的。
对我来说,模型是用于业务运营的包或属性,例如,如果我有一个使用 NewCustomerModel 的客户创建视图,我不想用 IList<CustomerType> 和 @ 之类的东西污染我的模型987654323@财产。我只想要第二个,因为它是用来创建客户的。