【问题标题】:what is the scope of Viewbag in mvc3 and how do we maintain state in MVCmvc3 中 Viewbag 的范围是什么以及我们如何在 MVC 中维护状态
【发布时间】:2018-11-30 14:49:46
【问题描述】:
  1. mvc3 中 Viewbag 的作用域是什么,它只在我们通过我的操作方法呈现的页面上可用。
  2. 我们如何在 MVC 中跨页面维护信息。假设我创建了新员工,当我转到下一页时,我想要该员工信息。
  3. 我们如何在 MVC 中维护状态。

【问题讨论】:

  • 我还要尽量避免使用 ViewBag,除非你必须这样做,因为如果你需要混合来自不同模型的数据,你就不能使用像 EditorFor 这样的通用辅助方法页面创建一个包含您需要的一切的 ViewModel,从长远来看,它会让生活变得更加轻松。

标签: c# .net asp.net-mvc-3 entity-framework-4


【解决方案1】:
  1. 视图包是 httpcontext 的一部分。它主要在控制器操作中设置并在视图中读取,但可以从 http 请求/响应中的 mvc 框架中的任何位置访问它。
  2. Web 没有状态,就像在富客户端应用程序中一样。要在页面之间维护值(或者更恰当地说,请求到请求),您可以使用 cookie、会话、查询字符串、请求正文(想想发布/放置请求)。
  3. 与 #2 相同。

【讨论】:

    【解决方案2】:
    1. ViewBag 是一个动态表达式,它适用于所有页面。 ViewBag 中的数据是根据我们指定的更改的内容。如果我们将ViewBag.items=itemlist; 分配给View,那么它对于View 将是常量。我们可以将任意数量的数据放入每个页面的ViewBag,对于单个页面,我们可以有

      ViewBag.items=itemlist;
      ViewBag.table=usertable;
      
    2. 您可以通过将数据作为参数传递给渲染我们要在其上维护信息的视图的方法来维护 MVC 中跨页面的信息,如下所示:

      public ActionResult CreateEmployee(EmployeeModel emp)
      {
           //Add Employee to db
           ViewBag.employee=emp;
           RedirectToAction("MethodToCall","Controller");
      }
      

    因此下一页可以有ViewBag中包含的员工信息

    或者,您也可以使用ViewData

    3] 可以使用会话、cookie 等维护状态

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      • 2014-10-22
      • 2023-01-03
      • 2020-07-30
      相关资源
      最近更新 更多