- 视图数据传递的作用
在MVC框架的开发中,视图所需要的数据可以通过视图中的一个变量或对象来接收,因此需要将需要传递的数据先存储到某一个传递的变量中,在视图中再进行读取和使用。而ViewData、ViewBag和TempData这三个可选项都可以用来传递这些数据。
ViewData是一个字典类型的对象,可以用于在控制器和视图之间传递数据,所传递的数据只在请求期间内有效,也就是一旦ViewData储存的数据被调用,这个数据就被清空了。同时需要注意一下,如果要将数据从Controller传递到View视图,常规的做法就是将数据绑定到ViewData中,然后在View视图中读取ViewData的值。
例子一:在控制器中将数据存入到ViewData字典中,然后在View视图中读取这个值并且使用。
public ActionResult Index(){
ViewData["Test"] = "Test data";
return View();
}
// 在View视图中取出ViewData的值
<h1>@ViewData["Test"]</h1>
- 使用ViewBag传值的注意事项
ViewBag是一个动态类型,使用起来非常方便。它允许您动态地添加属性。在控制器中使用ViewBag,我们可以将任何类型的对象存储在传递的信息中,然后在视图中又可以通过一个非常简单的语句来读取这个对象的属性。
例子二:在控制器中使用ViewBag传值,然后在View视图中读取这个值。
public ActionResult MyView() {
ViewBag.Name = "Yang";
return View();
}
// 在View视图中通过ViewBag来读取数据
<h1>@ViewBag.Name</h1>
- TempData使用的注意事项
TempData的一个很大的作用就是在跨控制器方法执行时,将信息从一个控制器传递到另外一个控制器。TempData是将传递的数据放到一个缓存里面,等下一个控制器执行时,就会从缓存中获取这些数据,获取完成后这个数据就会从缓存中删除。也就是说,TempData与Session类似,但是不同的是,TempData是一次性的,只要读取一次数据,这个数据就会被删除。
例子三:在两个控制器之间传递数据
public class HomeController : Controller {
public ActionResult Index() {
TempData["Msg"] = "Testing...";
return RedirectToAction("About");
}
}
public class AboutController : Controller {
public ActionResult Index() {
ViewBag.Message = TempData["Msg"];
return View();
}
}
// 在About视图中使用ViewBag读取数据
<h1>@ViewBag.Message</h1>
以上就是关于“.NET MVC中ViewData,ViewBag和TempData的区别浅析”的完整攻略,希望对大家有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:.NET MVC中ViewData,ViewBag和TempData的区别浅析 - Python技术站