1、ViewBag
2、ViewData
3、TempData
4、Model
1、ViewBag
Controller:ViewBag.变量名
View:直接使用@ViewBag.变量名
举例子:
ViewBag.wulala="hello";//什么类型都可以<p>@ViewBag.wulala</p>
2、ViewData
Controller:ViewData["key"]=value;
View:直接使用@ViewData["key"]
以上两种传值方式的前提是在同一个控制器下页面之间传值
3、TempData
他可以跨控制器传值,但是它具有一次性,也就是读完一次就消失了
Controller:TempData["key"]=value;
View:直接使用@TempData["key"]
例如: 当前在Home控制器下,传数据到Article控制器下
return Redirect("~/Article/myTest");//重定向到其他控制器下的页面
4、Model
区别于以上三种,上面三种传多个参数就要写多个xxxx["key"]=value;但是对于比较复杂或者数量比较多的数据,浏览器有时候会拒绝传输,这个时候可以传对象
比如我传一个user信息到前端:
public ActionResult ShowContext(int id){User u=new User(id,name,age,sex,phone,address,.....)return View(u);}
前段接受并使用:
//先声明接收的model的类型
@model 项目名字.Models.类名//使用
<p>名字:@Model.name</p>
<p>年龄:@Model.age</p>
再举一个传递一个list<>的例子
public ActionResult ShowContext(int id){List<works> workList = new List<works>();workList = Op_Works.FindArticleByFlag(id);return View(workList);}
前端接收并使用
@model List<ProtectAnimal.Models.works> //@model List<类型> @foreach (var w in Model)//遍历list的每一个对象{<article class="post"><header><div class="title"><h2><a href="#">@w.Title</a></h2><p>@w.CoreSentence</p></div><div class="meta"><a href="#" class="author"><img src="../../Content/images/avatar.jpg" alt="" /></a><span>@Html.ActionLink(@w.author, "CatAuthorArt", new { uid = w.Uid })</span></div></header><div class="setimage"><a href="#" class="image featured"><img src=@w.Image alt="" /></a></div><br /><p class="overline1">@w.Context</p></article>}