创建--前台表单数据提交到Controller

@model MVC_plug.Models.Students@{ViewBag.Title = "Create";
}<h2>Create</h2>@using (Html.BeginForm()) {@Html.ValidationSummary(true)    <fieldset><legend>Students</legend>  <div class="editor-label">@Html.LabelFor(model => model.Stu_Name)        </div><div class="editor-field">@Html.EditorFor(model => model.Stu_Name)@Html.ValidationMessageFor(model => model.Stu_Name)        </div>

参考室友的意见 + 断点,这里 浏览器解析Razor 语法是 将 BeginForm 解析为From表单,对于HTML来说是,是不存在实体类之说的,表单提交的值仅仅是以键值对的方式进行存储后提交到指定的Action中.

1 .在Controller中对应的Action的方法体中 将 Student 作为参数来接收

        [HttpPost]        public ActionResult Create(Students students){            if (ModelState.IsValid){db.Students.Add(students);db.SaveChanges();                return RedirectToAction("Index");}            return View(students);}

既然View中不存在将提交的内容绑定到 实体类中,那么输入的数据为什么在Action的参数Student中可以点出来? 实际上 View 中Post提交的数据 是以键值对的方式进行存储,然后映射到提交的Action中的 Student中,前提是 View中的键名(Name名字)必须要等于 实体类型的属性名,否则无法映射

2.在Controller中对应的Action的方法体中直接设置参数来接收值 ()

 public ActionResult Create(string Stu_Name,string Tel,string phone)

运行项目,其中Stu_Name、Tel 有值,phone 无值,当然这只是佐证,如果在前台的View 中设置的名字不一样,后台用Student去接收,同样也会得到空值。

后台传递数据到前台

1. 显示某数据列表 ,同样是后台Controller 将 查询的结果 赋值给一个实体类对象,用反射也好,反序也行,再 Return View(实体类);

前台最上面要引用 @model 指向实体类 来接收传递的数据,因为是同一个实体,直接映射到前台,最后View 中进行显示即可

2. 当然还可以选择 ViewData 和ViewBag 在后台的Action中赋值,然后在View中接收,关于这两者的比较,这里简单的整理下

ViewData 的 ViewDataDictionary 是一个特殊的字典类,当在控制器中使用 ViewData["CurrentTime"] = DateTime.Now; 其实是将这个值以键值对的形式进行存储

ViewBag不再是字典的键值对结构,而是dynamic动态类型,它会在程序运行的时候动态解析

MVC 高级编程中提高两者的区别

①只有当要访问的关键字是一个有效的C#标识符时,ViewBag 才起作用。

例如,如果在ViewData["Key With Spaces"]中存放一个值,那么就不能使用ViewBag访问。因为这样根本就无法通过编译。

②动态值不能作为一个参数传递给扩展方法。因为C#编译器为了选择正确的扩展方法,在编译时必须知道每一个参数的真正类型。如果其中任何一个参数是动态的,那么就不会通过编译。

例如,这行代码就会编译失败:@Html.TextBox("name",ViewBag.Name)。要使这行代码通过编译有两种方法:第一是使用ViewData["Name"],第二是把ViewBag.Name值转换为一个具体的型:(string)ViewBag.Name 。

说白了,ViewBag 就是在ViewData的升级版,两者只能在Action中起作用,当然,两者的数据是可以相互访问

mvc

转载于:https://blog.51cto.com/12945177/1950802

MVC 中的Model对象相关推荐

  1. java中的model_Java程序员必看之springmvc中的Model对象在重定向中的数据

    原标题:Java程序员必看之springmvc中的Model对象在重定向中的数据 在springmvc框架中,一个handler方法中的参数可以内置接收Model类型的对象,主要用于存储数据之用,主要 ...

  2. 【18】ASP.NET Core MVC 中的 Model介绍

    ASP.NET Core MVC 中的 Model 在本视频中,我们将通过一个示例讨论 ASP.NET Core MVC 中的 Model. 我们希望最终从 Student 数据库表中查询特定的学生详 ...

  3. 在Spring MVC中处理域对象

    最近,我惊讶于一个代码库在其所有域实体中都具有公共默认构造函数(即零参数构造函数),并且所有字段都具有getter和setter. 当我深入研究时,我发现域实体之所以如此,主要是因为该团队认为Web ...

  4. Spring MVC中的Model, ModelMap, 和ModelAndView

    1. 概述 在本文中,我们将介绍由弹簧MVC提供的核心组织弹簧框架,组织弹簧框架.. 2. Maven依赖关系 让我们从pom.xml文件中的弹簧上下文依赖关系开始: <dependency&g ...

  5. C# MVC中返回JSON 对象

    2019独角兽企业重金招聘Python工程师标准>>> public class JsonNetResult : ActionResult {public Encoding Cont ...

  6. mvc中js是如何调用HTML的,MVC中javascript直接调用Model

    最近做一个统计页面, Model从后台已经获取了数据集合,想直接在前台展示,而这个展示是需要用js生成图表的. 控制器部分代码: public ActionResult Index() { var m ...

  7. ASP.NET MVC 中解决Session,Cookie等依赖的方式

    目录 介绍 使用Filter方式 Filter在MVC生命周期中的位置 Filter常见的应用场景 Filter的执行顺序 MVC中常见的对Session,Cookie的依赖 使用Filter解除依赖 ...

  8. 在ASP.NET MVC中使用IIS级别的URL Rewrite

    在ASP.NET MVC中使用IIS级别的URL Rewrite 原文 在ASP.NET MVC中使用IIS级别的URL Rewrite 大约一年半前,我在博客上写过一系列关于URL Rewrite的 ...

  9. SpringMVC中使用作用域对象完成数据的流转

    文章目录 SpringMVC中使用作用域对象完成数据的流转 [1] 作用域对象复习 [2] SpringMVC中使用作用域对象流转数据 [3] SpringMVC的Model对象的使用 SpringM ...

最新文章

  1. 科技和法律的碰撞——人脸识别为何在旧金山被叫停
  2. ant+svn+tomcat实现项目自动部署
  3. 《JavaScript设计模式与开发实践》读书笔记之中介者模式
  4. layui数据表格自定义复选框表头_layui中table表头样式修改方法
  5. 重庆市计算机二级考试大纲,重庆市二级计算机考试大纲.doc
  6. ubuntu 14.04 环境下打开xls、pdf与png文件
  7. Vue.js - Day2
  8. python创建字符串_Python基础之字符串
  9. android上传到svn服务器端,上传Android项目到SVN
  10. Micrium代码规范——命名规则
  11. 安装算量软件使用_鹏业安装算量软件常用按钮汇总(三)
  12. 导出excel file-saver XLSX
  13. SQL server和SSMS的安装及使用说明
  14. 988-211所有学校
  15. 汽车标定工具ETAS总线模块ES582.1详情介绍
  16. toAppendStream doesn‘t support consuming update and delete changes which is produced by node XXX
  17. Python入门学习哪个视频好?
  18. python自己做课程表_Python课程表II
  19. 清理计算机磁盘碎片,电脑磁盘碎片清理我帮你
  20. python+pyhyper实现识别图片中的车牌号

热门文章

  1. 非常详细的测试unity与android之间的通讯操作
  2. Node.js项目实践:构建可扩展的Web应用
  3. 大数据算法系列——布隆过滤器
  4. PXE部署映像(WinPE 2.0)
  5. Windows Azure 架构指南 – 第 1卷 发布
  6. 对IP首部检验和的理解
  7. 当我们在谈大前端的时候,我们谈的是什么
  8. 网易微专业之《前端开发工程师》学习笔记(1)
  9. 基数排序python实现
  10. Framework 源码解析知识梳理(5) startService 源码分析