当前位置: 代码迷 >> 综合 >> asp.net mvc5 Controller向View传递数据四大方式简介
  详细解决方案

asp.net mvc5 Controller向View传递数据四大方式简介

热度:33   发布时间:2023-12-12 13:26:57.0

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>}

 

  相关解决方案