300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > ASP.NET MVC视图和控制器之间的传值总结(一)

ASP.NET MVC视图和控制器之间的传值总结(一)

时间:2022-05-13 16:05:40

相关推荐

ASP.NET MVC视图和控制器之间的传值总结(一)

一、Control往View传递值

1.1 ViewBag

ViewBag的后面接的是动态对象,它会在程序运行的时候动态解析。具体用法为ViewBag.Key,Key为Data在View中的唯一识别。

ViewBag其实本质就是ViewData,只是多了层Dynamic控制。他们的Key是共用的,如ViewBag.name其实和ViewData["name"]源代码是一样的,

修改了其中任何一个,两个都会被修改。ViewData和ViewBag中的值可以互相访问。

代码:

Control端:

public ActionResult Index2(){ViewBag.name = "张三";ViewData["name"] = "李四";return View();}

View端:

@{Layout = null;}<!DOCTYPE html><html><head><meta name="viewport" content="width=device-width" /><title>Index2</title></head><body><div><span>ViewBag: 姓名:@ViewBag.name</span><span>ViewData: 姓名:@ViewData["name"]</span></div></body></html>

结果:

ViewBag: 姓名:李四ViewData: 姓名:李四

1.2 ViewData

ViewData它key/Value的键值对。

Control端:

ViewData["name"] = "张三";

View端:

<span>年龄:@TempData["age"]</span>

ViewData和ViewBag的主要区别:ViewPage查询数据的时候,ViewData需要做数据类型的转换(必须显式转换),而ViewBag不需要做一些数据类型的转换(隐式转换)。

Control端:

public ActionResult Index(){Student stu = new Student();stu.name = "张三";stu.age = 20;ViewBag.student = stu;ViewData["student"] = stu;return View();}

View端:

@{ViewBag.Title = "Index";}<span>姓名:@ViewBag.student.name</span><span>年龄:@ViewBag.student.age</span>@{var stu = @ViewData["student"] as @MVC传值.Models.Student;}<span>姓名:@stu.name</span><span>年龄:@stu.age</span><a href="JumpMethod" >跳转到Test1View</a>

1.3 TempData

TempData只保存到下一个请求中,下一个请求完了之后,TempData就会被删除了。

TempData每一项即每一个Key对应的项次只能被(View或者Controller)使用一次,就会被销毁。

Request的定义从宏观上看就是页面刷新了一次。

至于TempData的生存周期请参考:/jhxk/articles/4773527.html

Control端:

public ActionResult Index(){TempData["age"] = 20;return View();}public ActionResult JumpMethod(){//TempData["age"] = 21;return RedirectToAction("Test1");}public ActionResult Test1(){return View();}

View端:

1 <span>姓名: @ViewBag.name</span>&nbsp;<span>年龄:@TempData["age"]</span>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。