【IT168 技术文档】从下图可以看出是首先通过view的请求,经过url导航到一个controller中,最终定位到一个action,在action中访问具体的model,获取数据之后,将数据放入ViewData或者是TempData中,然后通过action呈现到指定的view上。在view上可以定制显示的格式。
1 知识点
1.1 ViewData和TempData的区别
ViewData只能在本Action内有效,在本Action中可以保存数据。
TempData可以在Action跳转中使用,TempData的数据在服务器的Session中保存,但是只保留一个来回。也就是第一次跳转过去的时候还可以访问,后面就没有了。范围限制在同一个Controller中的不同Action传递数据。
public class HomeController : Controller
{
public ActionResult Index2()
{
ViewData["ViewData"] = "我是VeiwData中的数据";
TempData["TempData"] = "我是TempData中的数据";
return View("Index2");
}
public ActionResult Index3(string name)
{
Models.ViewModels.UserViewModel userVM=new Models.ViewModels.UserViewModel()
{
Name=name
};
return View(userVM );
}
}
{
public ActionResult Index2()
{
ViewData["ViewData"] = "我是VeiwData中的数据";
TempData["TempData"] = "我是TempData中的数据";
return View("Index2");
}
public ActionResult Index3(string name)
{
Models.ViewModels.UserViewModel userVM=new Models.ViewModels.UserViewModel()
{
Name=name
};
return View(userVM );
}
}
在Index2和Index3两个View中分别加入下面的代码,就是显示一下ViewData和TempData中的内容。
为了显示效果,在Index2的View中加入下面的代码。 这句直接呈现Index3的View,直接可以看到效果。
<div>
1 <%= ViewData["ViewData"] %><br />
2 <%=TempData["TempData"] %>
</div>
<br />
<%Html.RenderAction("Index3"); %>
1 <%= ViewData["ViewData"] %><br />
2 <%=TempData["TempData"] %>
</div>
<br />
<%Html.RenderAction("Index3"); %>
在Index3的View中加入下面的代码
<h2>ViewPage1</h2>
<%=Model.Name %>
<br />
<div>
1 <%= ViewData["ViewData"] %><br />
2 <%=TempData["TempData"] %>
</div>
<%=Model.Name %>
<br />
<div>
1 <%= ViewData["ViewData"] %><br />
2 <%=TempData["TempData"] %>
</div>
结果就是
大家注意看上图中的两个红色框,第一个框中显示都有数据,第二个框中显示只有TempData中还有数据。