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的生存周期請參考:http://www.cnblogs.com/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> <span>年齡:@TempData["age"]</span>?
轉載于:https://www.cnblogs.com/cherish836138981/articles/6586597.html
總結
以上是生活随笔為你收集整理的ASP.NET MVC视图和控制器之间的传值总结(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Js基本函数 2017-03-20
- 下一篇: 【初码干货】关于.NET玩爬虫这些事