• MVC-传值


    控制器传给视图

    1、ViewData

    定义:表示一个容器,该容器用于在控制器和视图之间传递数据。他是一个字典。

    后台声明:ViewData["User"]=1;

    页面访问:@ViewData["User"]

    2、ViewBag

    定义:dynamic动态类型,它会在程序运行的时候动态解析。

    本质:ViewBag其实本质就是ViewData,只是多了层Dynamic控制(导致同名的会覆盖掉。而且viewdata可以访问到viewbage中的数据)。所以,使用何种方式完全取决于你的个人爱好。viewdata比viewbag快

    声明周期:ViewBag和ViewData仅针对当前Action中有效,生命周期和view相同。

    后台声明:ViewBag.User=1;

    页面访问:@ViewBag.User或者@ViewData["User"]

    上图中先添加一个viewdadta["User"],然后又添加一个viewbag.User。就会产生一个问题,viewbag.User会覆盖掉viewdadta["User"]

    3、TempData

    定义:表示仅从一个请求保持到下一个请求的数据集。它也是一个字典。

    本质:保存在session中,Controller每次执行请求时,会从session中获取tempdata,而后清空session,获取完tempdata数据,虽然保存在内部字典中。但是字典中每个条目访问一次后就从字典中删除。每个元素

    最多只能访问一次,之后删除。(不建议使用,这个webform里面通过session传值有什么区别?)

    他可以跨Action传递,比如说,第一个action定义一个TempData,但是他的对应view没有使用它(因为使用了会消失),在打开另外一个view,另外一个view还会访问到这个TempData。

    后台声明:TempData["User"]=1;

    页面访问:@TempData["User"]

    4、return View(new VerifyCodeViewModel());这种更可以表现MVC的特点。

    后台声明:return View(new VerifyCodeViewModel());

    页面访问:

        制定类型 @model WebApplication14.Models.VerifyCodeViewModel

        访问模型中的值 @Model.属性

    在类型转换的时候,可以再页面上写后台代码声明变量,这样下面要是有多个访问的时候就只需要转化一次。(viewbage是不需要转化的,因为自己会转换,里面用的是反射。所以效率低)

    return view也可以指定返回的视图。其实asp.net中的mvc最大的特点就是1:约定俗称,但是也可以用户自己配置修改(约定大于配置)。2:扩展性

    总结:

    1、ViewData和TempData是字典类型,赋值方式用字典方式,ViewData["myName"] 

    2、ViewBag是动态类型,使用时直接添加属性赋值即可 ViewBag.myName

    3、ViewBag和ViewData只在当前Action中有效,等同于View

    4、TempData可以通过转向继续使用,因为它的值保存在Session中。但TempData只能经过一次传递,之后会被系统自动清除

    5、ViewData和ViewBag中的值可以互相访问,因为ViewBag的实现中包含了ViewData

    视图传给控制器

    表单提交数据给action,会自动模型绑定。

    ajax调用 数据格式json  action也会自动模型绑定。

  • 相关阅读:
    Delphi实战中讲解FormCreate,FormShow,FormActivate
    delphi Try except on e:Exception do
    Delphi处理数据网格DBGrid的编辑框 获取还没有提交到数据集的字段文本
    delphi dbgrid中如何自动生成序号
    DBDateTimePicker;
    Delphi控件开发浅入深出(八)
    delphi中日期类型TDateTime使用总结
    在DBGrid录数据时,如何判断光标位置是在数据的最左或最右,如果是最左或最右则在按左右光标键时光标跳到上一格或下一格,如果是在数据中
    请问如何按Enter键让DBGrid的光标向右移以及换行?(0分)
    tdbgrid中用enter仿真tab键盘_delphi教程
  • 原文地址:https://www.cnblogs.com/wudequn/p/7669128.html
Copyright © 2020-2023  润新知