第一种方式 "ViewBag"——动态视图数据字典(多数情况下可以使用这种方式)
具体原理:
该属性位于ControllerBase抽象类中、定义如下:
public dynamic ViewBag { get; }
属性类型:dynamic (运行时加载、错误使用程序将会报错)
注意事项:
1.只读类型:如果在控制器中直接将该值赋为NULL将会 有错误提示如图1所示
图 1 动态视图数据字典是只读的
2.视图的WebViewPage类型下同样拥有一个ViewBag属性、且定义方式与控制器抽象类ControllerBase的定义方式一模一样。
所以控制器能够将需要传递的数据绑定在ViewBag上传递给视图。
调用例子:
1.在控制器中定义了如下代码:
public class ViewBagController : Controller
{
// GET: ViewBag
public ActionResult Index()
{
ViewBag.Dramaname = "都挺好";
ViewBag.performer = "苏大强";
ViewBag.Releasetime = "2017";
return View();
}
}
2.在视图上显示相关数据
@{
ViewBag.Title = "测试控制器到视图数据的传递";
}
<h1>剧名:@ViewBag.Dramaname</h1>
<h2>主要人物:@ViewBag.performer </h2>
<h3> 上映时间:@ViewBag.Releasetime</h3>
3.显示效果如下:
第二种方式ViewData——该属性同样定义在ControllerBase抽象类中定义如下
public ViewDataDictionary ViewData { get; set; }
是一种字典类型的数据。注意该键值对中、值是Object类型的、所以在视图中使用控制器传递的数据需要进行类型转换。
public object this[string key] { get; set; }
1.在控制器中定义如下代码
public class ViewBagController : Controller
{
// GET: ViewBag
public ActionResult Index()
{
ViewData["Dramaname"] = "都挺好";
ViewData["performer"] = "苏大强";
ViewData["Releasetime"] = "2017";
return View();
}
}
2.在对应的视图中接收数据
@{
ViewBag.Title = "测试控制器到视图数据的传递";
}
<h1>ViewData剧名:@ViewData["Dramaname"]</h1>
<h2>ViewData主要人物:@ViewData["performer"]</h2>
<h3> ViewData上映时间:@ViewData["Releasetime"]</h3>
3.显示效果如下
第三种方式——TempData具备和ViewData一致的功能、除此之外、利用TempData还能够进行视图跳转数据传递
1.在控制器中添加如下代码
public class ViewBagController : Controller
{
// GET: ViewBag
public ActionResult Index()
{
TempData["Dramaname"] = "都挺好";
TempData["performer"] = "苏大强";
TempData["Releasetime"] = "2017";
return RedirectToAction("Temp");
}
public ActionResult Temp()
{
return View();
}
}
新建一个Temp视图代码如下
@{
ViewBag.Title = "Temp";
}
<h1>跳转视图——剧名:@TempData["Dramaname"]</h1>
<h2>跳转视图——主要人物:@TempData["performer"]</h2>
<h3> 跳转视图——上映时间:@TempData["Releasetime"]</h3>
显示效果
第四种方式——强类型视图
1.在控制器中添加如下代码
public class ViewBagController : Controller
{
// GET: ViewBag
public ActionResult Index()
{
return View(new Student() { Name="苏大强",Id=1});
}
}
public class Student
{
public string Name { get; set; }
public int Id { get; set; }
}
2.定义视图为强类型视图
@model ZhanZeBinMVC.Controllers.Student
@{
ViewBag.Title = "学生信息展示";
}
<h2>姓名:@Model.Name</h2>
<h2>学号:@Model.Id</h2>
@model ZhanZeBinMVC.Controllers.Student 是强类型视图的标志
3.显示效果
说明:学习记录
技术交流联系:
QQ:754258817
转载请注明出处!!!!!!