asp.net-mvc – 什么是适当的时间为ViewData,ViewBag,会话,TempD
发布时间:2020-12-15 19:36:42 所属栏目:asp.Net 来源:网络整理
导读:我正在编辑一个项目,我看到一个会话[“”]在一个控制器方法和TempData [“”]在另一个。 4之间有什么区别或者它只是4种方式做同样的事情。 解决方法 ViewData / ViewBag – 仅在当前请求的持续时间内有效。您在控制器操作中设置它,并在视图中使用它,然后
我正在编辑一个项目,我看到一个会话[“”]在一个控制器方法和TempData [“”]在另一个。 4之间有什么区别或者它只是4种方式做同样的事情。
解决方法
> ViewData / ViewBag – 仅在当前请求的持续时间内有效。您在控制器操作中设置它,并在视图中使用它,然后它消失。区别是第一个是字典,第二个只是这个字典的一个动态包装。两者指向相同的数据。 ViewBag在ASP.NET MVC 3中引入。
例: public ActionResult Index() { ViewData["foo"] = "bar"; return View(); } 在视图中你可以使用这个值: <div>@ViewData["foo"]</div> 与ViewBag相同,但它是动态的: public ActionResult Index() { ViewBag.foo = "bar"; return View(); } 在视图中你可以使用这个值: <div>@ViewBag.foo</div> 所以,你可以看到ViewData / ViewBag只是??一个替代方法传递信息到一个视图从控制器动作相比,经典和推荐的方式是使用视图模型: public class MyViewModel { public string Foo { get; set; } } 接着: public ActionResult Index() { var model = new MyViewModel { Foo = "bar" }; return View(model); } 和你的强类型视图里面: @model MyViewModel <div>@Html.DisplayFor(x => x.Foo)</div> 正如你可以看到的,使用视图模型提供了一个强类型的方法将信息传递到视图从控制器操作。 > TempData – 它允许在单个后续请求的持续时间内保留信息。你在TempData中存储内容,然后重定向。在重定向到的目标控制器操作中,您可以检索存储在TempData中的值。 例: public ActionResult Foo() { TempData["foo"] = "bar"; return RedirectToAction("bar"); } public ActionResult Bar() { var value = TempData["foo"] as string; // use the value here. If you need to pass it to the view you could // use ViewData/ViewBag (I can't believe I said that but I will leave it for the moment) return View(); } ASP.NET MVC将自动使存储在TempData中的值在您读取后过期。下面的ASP.NET MVC将信息持久化到Session中。 > Session – 与TempData相同,除了它永不过期 – 它将对所有请求有效,而不是单个重定向。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-3 – .NET MVC 3以编程方式设置布局
- asp.net – 访问网站根目录时,FormsAuthentication重定向到
- asp.net-mvc – 使用Razor DropDownList的Bootstrap
- 在asp.net core中使用托管服务实现后台任务
- asp.net-mvc – 单选按钮如何与asp.net mvc绑定一起使用
- asp.net core 3.0 中使用 swagger
- Asp.net核心2采用角度6模板
- .net – 如何在代码中定义listview模板
- asp.net-mvc – 使用JWT实现的最小WebAPI2 OAuth:401始终返
- asp.net – 是否可以将多个域/子域指向同一个网站,或者在一
推荐文章
站长推荐
- asp.net-mvc – 在asp.net MVC中授权属性和jquer
- asp.net-web-api – 在ASP.NET WebAPI OData中返
- asp.net-mvc-2 – 如何在ASP.NET MVC 2.0中的视图
- asp.net-mvc – 在MVC项目中创建区域
- asp.net – 发布时母版页无法加载类型错误
- .net – 如何检查用户是属于AD组还是嵌套组?
- asp.net-mvc – WebMatrix路由如何工作?
- asp.net – 在WiX安装程序中的应用程序池上设置禁
- asp.net-mvc – 使用NHibernate和Autofac管理多个
- asp.net-mvc-4 – 将模型绑定到ASP.NET MVC4中的
热点阅读