【MVC框架】——View和Controller之间的传值
在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>。所实现的效果就是
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
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>
View
<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传值是不可避免的。熟练掌握它们之间的传值方法,有利于更流利的开发。
【MVC框架】——View和Controller之间的传值的更多相关文章
- 【ASP.NET MVC】View与Controller之间传递数据
1 概述 本篇文章主要从操作上简要分析Controller<=>View之间相互传值,关于页面之间传值,如果感兴趣,可参考我另外一篇文章ASP.NET 页面之间传值的几种方式 . Co ...
- mvc中view与controll之间传递参数时,可以使用url进行传递
mvc中view与controller之间传递参数时,可以使用url进行传递,但是在url的地址中需要加上“id=123”这样的东西才行. 具体如代码: window.location.href = ...
- View 与 Controller 之间的delegate(代理)传值
这个代理传值是经常使用的一种传值方式,下面介绍一种View 和 Controller 之间的代理传值方法. 先建立一个View视图 如 LoginView 是继承于一个UIView 在LoginVie ...
- 【MVC架构】——怎样利用Json在View和Controller之间传递数据
在MVC架构中,尽管非常多东西和三层非常相似,可是也有非常大的差别.就比方传递数据.在三层架构中,传递数据就仅仅要一层返回,另外一层用同样类型的变量来接收即可了.在MVC中,事实上原理是一样的,Con ...
- MVC 从View像Controller中传值
在上一篇博客中总结了一下从Controller像View中传值的几种方法.事实上看那些方法和在我们最初学习VB的时候一样,将数据库中的数据显示到前台的页面.数据库还是那个数据库,仅仅是如今前台变成了浏 ...
- 【MVC】View与Control之间数据传递
1. Controller向View传递数据 使用ViewData传递数据[弱类型,字典型ViewDataDictionary] ViewData[“Message_ViewData”] = “ He ...
- Spring MVC学习笔记——给Controller和视图传值
一.给Controller传值,值将显示在控制台 1.第一种:使用@RequestParam,改HelloController.java //RequestMapping表示用哪一个url来对应 @R ...
- MVC中view和controller相互传值的方法
MVC项目中,在view层如果使用前台框架,框架中会有封装好的相互传值方法.但是,那些postdata[][]方法不一定能够满足功能需求,反而一些常用的传值方法可能会刚好解决它们的不足.总结如下: 一 ...
- MVC进阶学习--View和Controller之间的数据传递(二)
1. 使用Request.Form MVC 将页面简单化,与WebForm中的事件机制完全不同,就和普通的html标签表单提交没有任何区别(当然WebForm中的事件机制其实也是表单提交).在表单提交 ...
随机推荐
- oracle添加联合主键
1 alter table tablename add constraint unionkeyname primary key (column1,column2); 上面语句中: tablename为 ...
- JPQL 模糊查询,查询条件拼接(like使用)
@Transactional public List<ViewCorplist2> findAllCorpsLikeK(String kw) { System.out.println(kw ...
- iframe子页面让父页面跳转 parent.location.href
if ($roleNum < 9) { echo "<script > parent.location.href='admin_login.php' </script ...
- 10.4 缓冲流 BufferedReader & BufferedWriter & 缓冲流特殊功能readLine
缓冲流和正常流的使用大致相同,缓冲流效率更高. package day10_io_fileWrite_Read.buffer_stream; import java.io.*; /* * Buffer ...
- XML解析——Java中XML的四种解析方式(转载 by 龍清扬)
XML是一种通用的数据交换格式,它的平台无关性.语言无关性.系统无关性.给数据集成与交互带来了极大的方便.XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已. XML的解析方式分为四 ...
- C++ 11常见功能介绍:auto,decltype,nullptr,for,lambda
什么是C++11 C++11是曾经被叫做C++0x,是对目前C++语言的扩展和修正,C++11不仅包含核心语言的新机能,而且扩展了C++的标准程序库(STL),并入了大部分的C++ Technical ...
- c++函数进阶
c++扩展了c语言的函数功能.通过将incline关键字用于函数定义,并在首次调用该函数前提供其函数定义,可以使得c++编译器将该函数视为内联函数.也就是说,编译器不是让程序跳到独立的代码段,以执行函 ...
- [Algorithm] 9. Two Sum
Description Given an array of integers, return indices of the two numbers such that they add up to a ...
- [luoguP2387] 魔法森林(LCT + 并查集)
传送门 并查集真是一个判断连通的好东西! 连通性用并查集来搞. 把每一条边按照 a 为关键字从小到大排序. 那么直接枚举,动态维护 b 的最小生成树 用 a[i] + 1 ~ n 路径上最大的 b[i ...
- [bzoj1001]狼爪兔子[平面图的最小割等于其对偶图的最短路]
一定要仔细算内存,,,又少写一个零.. #include <bits/stdc++.h> using namespace std; template<const int _n,con ...