在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之间的传值的更多相关文章

  1. 【ASP.NET MVC】View与Controller之间传递数据

    1   概述 本篇文章主要从操作上简要分析Controller<=>View之间相互传值,关于页面之间传值,如果感兴趣,可参考我另外一篇文章ASP.NET 页面之间传值的几种方式 . Co ...

  2. mvc中view与controll之间传递参数时,可以使用url进行传递

    mvc中view与controller之间传递参数时,可以使用url进行传递,但是在url的地址中需要加上“id=123”这样的东西才行. 具体如代码: window.location.href = ...

  3. View 与 Controller 之间的delegate(代理)传值

    这个代理传值是经常使用的一种传值方式,下面介绍一种View 和 Controller 之间的代理传值方法. 先建立一个View视图 如 LoginView 是继承于一个UIView 在LoginVie ...

  4. 【MVC架构】——怎样利用Json在View和Controller之间传递数据

    在MVC架构中,尽管非常多东西和三层非常相似,可是也有非常大的差别.就比方传递数据.在三层架构中,传递数据就仅仅要一层返回,另外一层用同样类型的变量来接收即可了.在MVC中,事实上原理是一样的,Con ...

  5. MVC 从View像Controller中传值

    在上一篇博客中总结了一下从Controller像View中传值的几种方法.事实上看那些方法和在我们最初学习VB的时候一样,将数据库中的数据显示到前台的页面.数据库还是那个数据库,仅仅是如今前台变成了浏 ...

  6. 【MVC】View与Control之间数据传递

    1. Controller向View传递数据 使用ViewData传递数据[弱类型,字典型ViewDataDictionary] ViewData[“Message_ViewData”] = “ He ...

  7. Spring MVC学习笔记——给Controller和视图传值

    一.给Controller传值,值将显示在控制台 1.第一种:使用@RequestParam,改HelloController.java //RequestMapping表示用哪一个url来对应 @R ...

  8. MVC中view和controller相互传值的方法

    MVC项目中,在view层如果使用前台框架,框架中会有封装好的相互传值方法.但是,那些postdata[][]方法不一定能够满足功能需求,反而一些常用的传值方法可能会刚好解决它们的不足.总结如下: 一 ...

  9. MVC进阶学习--View和Controller之间的数据传递(二)

    1. 使用Request.Form MVC 将页面简单化,与WebForm中的事件机制完全不同,就和普通的html标签表单提交没有任何区别(当然WebForm中的事件机制其实也是表单提交).在表单提交 ...

随机推荐

  1. tcpdump命令使用方法

    NAME tcpdump - 转储网络上的数据流 总 tcpdump [ -adeflnNOpqStvx ] [ -c count ] [ -F file ] [ -i interface ] [ - ...

  2. 文件和打印共享资源(IP地址)处于联机状态,但未对连接尝试做出响应。

    文件和打印共享资源(IP地址)处于联机状态,但未对连接尝试做出响应. 检测到 远程计算机不接受端口 445 上的连接,这可能是由于防火墙或安全策略设置,或因为服务可能暂时不可用.Windows 在计算 ...

  3. logging,numpy,pandas,matplotlib模块

    logging模块 日志总共分为以下五个级别,这五个级别自下而上进行匹配debug->info->warning->error->critical,默认的最低级别warning ...

  4. ThinkPHP---layer插件

    [概论] (1)layer是基于jquery开发的一款美化弹框的插件,主要用于弹框效果的交互.但其他功能和组件也日益完善 官网:http://layer.layui.com 在线手册:http://w ...

  5. A useful logger function in C project.

    #cat log.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include < ...

  6. uva-122 Trees on the level(树的遍历)

    题目: 给出一棵树的表示,判断这棵树是否输入正确,如果正确就按层次遍历输出所有的结点,错误的话就输出not complete. 思路: 根据字符串中树的路径先将树建起来,在增加结点和层次遍历树的时候判 ...

  7. Linux 应用总结:自动删除n天前的日志

    linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情.不用你去每天惦记着是否需要清理日志 ...

  8. vue v-model 的注意点

    在使用表单元素 input 的 v-model 指令时,碰到一个问题: 如上图,修改 input 的内容,以便随时显示:但显示时明显慢一步. <template> <div> ...

  9. Python selenium chrome打包exe后禁用控制台输出滚动日志

    Python selenium chrome打包exe后,在运行的过程中,如果遇到需要input()输入时,会发现被不断滚动刷新的日志把命令行输入快速顶掉了,通过查阅资料不断实践,发现以下方法有效: ...

  10. mesh topology for airfoil, wing, blade, turbo

    ref Ch. 5, Anderson, CFD the basics with applications numerical grid generation foundations and appl ...