【问题标题】: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@财产。我只想要第二个,因为它是用来创建客户的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-04-06
          • 1970-01-01
          • 1970-01-01
          • 2016-07-29
          • 2011-02-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多