MVC 中的Model对象
创建--前台表单数据提交到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对象相关推荐
- java中的model_Java程序员必看之springmvc中的Model对象在重定向中的数据
原标题:Java程序员必看之springmvc中的Model对象在重定向中的数据 在springmvc框架中,一个handler方法中的参数可以内置接收Model类型的对象,主要用于存储数据之用,主要 ...
- 【18】ASP.NET Core MVC 中的 Model介绍
ASP.NET Core MVC 中的 Model 在本视频中,我们将通过一个示例讨论 ASP.NET Core MVC 中的 Model. 我们希望最终从 Student 数据库表中查询特定的学生详 ...
- 在Spring MVC中处理域对象
最近,我惊讶于一个代码库在其所有域实体中都具有公共默认构造函数(即零参数构造函数),并且所有字段都具有getter和setter. 当我深入研究时,我发现域实体之所以如此,主要是因为该团队认为Web ...
- Spring MVC中的Model, ModelMap, 和ModelAndView
1. 概述 在本文中,我们将介绍由弹簧MVC提供的核心组织弹簧框架,组织弹簧框架.. 2. Maven依赖关系 让我们从pom.xml文件中的弹簧上下文依赖关系开始: <dependency&g ...
- C# MVC中返回JSON 对象
2019独角兽企业重金招聘Python工程师标准>>> public class JsonNetResult : ActionResult {public Encoding Cont ...
- mvc中js是如何调用HTML的,MVC中javascript直接调用Model
最近做一个统计页面, Model从后台已经获取了数据集合,想直接在前台展示,而这个展示是需要用js生成图表的. 控制器部分代码: public ActionResult Index() { var m ...
- ASP.NET MVC 中解决Session,Cookie等依赖的方式
目录 介绍 使用Filter方式 Filter在MVC生命周期中的位置 Filter常见的应用场景 Filter的执行顺序 MVC中常见的对Session,Cookie的依赖 使用Filter解除依赖 ...
- 在ASP.NET MVC中使用IIS级别的URL Rewrite
在ASP.NET MVC中使用IIS级别的URL Rewrite 原文 在ASP.NET MVC中使用IIS级别的URL Rewrite 大约一年半前,我在博客上写过一系列关于URL Rewrite的 ...
- SpringMVC中使用作用域对象完成数据的流转
文章目录 SpringMVC中使用作用域对象完成数据的流转 [1] 作用域对象复习 [2] SpringMVC中使用作用域对象流转数据 [3] SpringMVC的Model对象的使用 SpringM ...
最新文章
- 科技和法律的碰撞——人脸识别为何在旧金山被叫停
- ant+svn+tomcat实现项目自动部署
- 《JavaScript设计模式与开发实践》读书笔记之中介者模式
- layui数据表格自定义复选框表头_layui中table表头样式修改方法
- 重庆市计算机二级考试大纲,重庆市二级计算机考试大纲.doc
- ubuntu 14.04 环境下打开xls、pdf与png文件
- Vue.js - Day2
- python创建字符串_Python基础之字符串
- android上传到svn服务器端,上传Android项目到SVN
- Micrium代码规范——命名规则
- 安装算量软件使用_鹏业安装算量软件常用按钮汇总(三)
- 导出excel file-saver XLSX
- SQL server和SSMS的安装及使用说明
- 988-211所有学校
- 汽车标定工具ETAS总线模块ES582.1详情介绍
- toAppendStream doesn‘t support consuming update and delete changes which is produced by node XXX
- Python入门学习哪个视频好?
- python自己做课程表_Python课程表II
- 清理计算机磁盘碎片,电脑磁盘碎片清理我帮你
- python+pyhyper实现识别图片中的车牌号