【MVC框架】——View和Controller之间的传值
来源:互联网 发布:win7启用网络发现 编辑:程序博客网 时间:2024/06/05 04:12
在MVC中,Controller执行一个可以说是路由功能,它通过View传过来的数据,来决定应该调用哪一个Model,同样会把Model处理完的数据传给View,所以就总是涉及到Controller和View的传值,那么它们之间是怎么传值的呢?
Controller向View传值
1、使用ViewBag
Controller
<span style="font-family:KaiTi_GB2312;font-size:18px;">public ActionResult Index(){ ViewBag.Message = "欢迎使用 ASP.NET MVC!"; return View();}</span>
View
<span style="font-family:KaiTi_GB2312;font-size:18px;">@{ ViewBag.Title = "主页";}<h2>@ViewBag.Message</h2><p> 若要了解有关 ASP.NET MVC 的更多信息,请访问 <a href="http://asp.net/mvc" title="ASP.NET MVC 网站">http://asp.net/mvc</a>。</p></span>ViewBag传过来的Message信息将会传递给<h2>@ViewBag.Message</h2>,所实现的效果就是
2、使用ViewData
Controller
<span style="font-family:KaiTi_GB2312;font-size:18px;">public ActionResult Index() { ViewData["Message"] = "Welcome to ASP.NET MVC!"; return View(); } </span>
View
<span style="font-family:KaiTi_GB2312;font-size:18px;"><h2><%=Html.Encode(ViewData["Message"])%></h2><p> 若要了解有关 ASP.NET MVC 的更多信息,请访问 <a href="http://asp.net/mvc" title="ASP.NET MVC 网站">http://asp.net/mvc</a>。</p></span>所实现的效果是相同的。
3、使用TempData
Controller
<span style="font-family:KaiTi_GB2312;font-size:18px;">public ActionResult Index() { TempData["Message"] = "Welcome to ASP.NET MVC!"; return View(); } </span>
View
<span style="font-family:KaiTi_GB2312;font-size:18px;"><h2><%=Html.Encode(TempData["Message"])%></h2><p> 若要了解有关 ASP.NET MVC 的更多信息,请访问 <a href="http://asp.net/mvc" title="ASP.NET MVC 网站">http://asp.net/mvc</a>。</p></span>
4、使用Model
Controller
<span style="font-family:KaiTi_GB2312;font-size:18px;">public ActionResult ModelDemo() { User u= new User() { UserName="li", Password="abcde" }; return View(u); } </span>
<span style="font-family:KaiTi_GB2312;font-size:18px;"><p> <%User u = (User)ViewData.Model;%> UserName: <%= Html.Encode(u.UserName) %> </p> <p> Password: <%= Html.Encode(u.Password) %> </p> </span>
ViewData是Key/Value字典集合,在MVC1中就有了,ViewData传值比ViewBag要快;ViewBag是dynamic类型对象,从MVC3才开始出现,比ViewData传值慢,但是可读性好。
ViewData只能用于当前Action中,而TempData类似于Session,可以跨Action进行访问,一般用于存储错误信息。
Model传递强类型,所以在创建视图时,需要创建强视图。
View向Controller传值
1、通过Request.Form读取表单数据
View
<span style="font-family:KaiTi_GB2312;font-size:18px;"><% using (Html.BeginForm("ActionName", "ControllerName")) { %> UserName:<% Html.TextBox("UserName"); %> Password:<% Html.TextBox("Password"); %><%} %></span>
Controller
<span style="font-family:KaiTi_GB2312;font-size:18px;">[AcceptVerbs(HttpVerbs.Post)] public ActionResult ActionName() { string username = Request.Form["UserName"]; string password = Request.Form["Password"]; return View();}</span>
2、通过FormCollection读取表单数据
View
<span style="font-family:KaiTi_GB2312;font-size:18px;"><% using (Html.BeginForm("ActionName", "ControllerName")) { %> UserName:<% Html.TextBox("UserName"); %> Password:<% Html.TextBox("Password"); %><%} %></span>
Controller
<span style="font-family:KaiTi_GB2312;font-size:18px;">[AcceptVerbs(HttpVerbs.Post)] public ActionResult ActionName(FormCollection formCollection) { string username = formCollection["UserName"]; string password = formCollection["Password"]; return View(); }</span>
总结
页面传值会用到各种方法,那么页面和控制器间的传值同样会有很多方法。View和Controller传值是不可避免的,熟练掌握它们之间的传值方法,有利于更流利的开发。
0 0
- 【MVC框架】——View和Controller之间的传值
- MVC- View和Controller之间的传值
- MVC架构中使用ajax实现view和controller之间值的传递
- MVC入门 从Controller到VIew 之间传值学习
- 【MVC架构】——如何利用Json在View和Controller之间传递数据
- 【Asp.Net MVC】Controller和View之间传递数据
- MVC中的页面传值,通常指Controller和view之间的数据传递,经常用到的有几种方式,总结如下:
- ITOO——MVC中View与Controller间的传值
- MVC中Controller与View之间的数据传递
- Asp.net mvc Controller与 View之间的传递
- spring mvc controller和jsp之间传值
- .net MVC的controller与view的传值方式
- 关于MVC从View向Controller传值的问题
- MVC从Controller到view进行传值的方法
- view与其他controller和view之间的引用方法
- MVC View和Controller传值
- MVC中Controller间的传值、Controller到View的传值方法
- <mvc:view-controller />的用法
- C++深度理解复杂链表的构造复制
- POJ 1160 Post Office (水DP)
- hdoj-4790-Just Random【数论】
- EditText只改变Hint字体大小
- Readactor: Practical Code Randomization Resilient to Memory Disclosure阅读笔记(一)
- 【MVC框架】——View和Controller之间的传值
- C++类成员变量和构造函数初始化
- n a^o7 !
- Http访问网络(AsyncTask 异步加载和使用HttpURLConnection)
- hdu 4635 Strongly connected (强连通缩点)
- 内部字段分隔符学习笔记
- Samba实现windows/ubuntu 文件共享
- 绝对详细!Nginx基本配置、性能优化指南
- 利用json从后端取数据