ASP.NET MVC快速入门之保存数据与模型绑定

  • ASP.NET MVC快速入门之保存数据与模型绑定已关闭评论
  • 104 views
  • A+
所属分类:C#.NET 编程技术

下面我们来看下拥有[HttpPost]元数据的Create方法:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ID,Name,Gender,Major,EntranceDate")] Student student)
{
       if (ModelState.IsValid)
       {
              db.Students.Add(student);
              db.SaveChanges();
              return RedirectToAction("Index");
       }
 
       return View(student);
}

这里面有两个安全措施:

  1. ValidateAntiForgeryToken:用来阻止CSRF(跨站请求伪造)。
  2. Bind:用来阻止Over-Posting(过多提交攻击)。

这两个安全手段我们会在以后的文章中详细介绍,这里就先略过。

 

我们先看下本次请求的POST参数:

ASP.NET MVC快速入门之保存数据与模型绑定

但是Create方法中只有一个Student对象参数,是不是很神奇,其实这是一个重要的概念模型绑定

 

如果在WebForms中,我们可以会写一堆代码来从Request.Form中获取参数,并重建Student对象,类似如下代码:

Student student = new Student();
student.Name = Request.Form["Name"];
student.Gender = Convert.ToInt32(Request.Form["Gender"]);
....

在MVC中,这一过程是自动完成,简单来说这就是模型绑定。

 

但是实际的模型绑定过程,不仅在请求的表单数据中查找,还会在路由参数,URL查询字符串,以及Cookie中查找。

 

如果模型绑定失败(比如模型参数不符合验证规则),则ModelState.IsValid就为false,这时会直接返回页面内容,此时模型对象student中保存的是用户输入的值,前端也会有错误提示,这个过程我们会在下一篇文章中讲解。

 

如果模型绑定成功,则保存新增数据,然后通过RedirectToAction来重定向到表格页面:

ASP.NET MVC快速入门之保存数据与模型绑定

 

小结

这篇文章首先介绍了VS2015下MVC项目的创建过程;然后简要概述页面执行的流程,从路由引擎到控制器,再由控制器到视图,最后由视图返回到浏览器,而模型是作为控制器传入视图的参数,这样清晰明了;最后使用VS提供的模板,创建了一个带CRUD操作的数据访问实例。

EF CodeFirst让我们的关注点从数据库转移到了模型,而模型又是MVC的核心所在,对模型进行恰当的数据注解,不仅会影响数据库的表结构,而且会影响浏览器端的数据验证和服务端的数据验证,因此下一篇文章我们会详细介绍一下数据注解。

下载示例源代码

 

 

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=1an8ruzon8ti4

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
助力产业智慧升级,云服务器首年88元起,更有千元代金券礼包免费领!