HTML5技术

【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6) - 三生石上(5)

字号+ 作者:H5之家 来源:H5之家 2016-12-23 17:00 我要评论( )

@model AspNetMvc.QuickStart.Models.Student@{ViewBag.Title = "Create";} Create @using (Html.BeginForm()){@Html.AntiForgeryToken() Student @Html.ValidationSummary(true, "", new { @class = "text-danger"

@model AspNetMvc.QuickStart.Models.Student @{ ViewBag.Title = "Create"; } Create @using (Html.BeginForm()) { @Html.AntiForgeryToken() Student @Html.ValidationSummary(true, "", new { @class = "text-danger" }) @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" }) @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) @* 省略 Gender Major EntranceDate *@ } @Html.ActionLink("Back to List", "Index") @section Scripts { @Scripts.Render("~/bundles/jqueryval") }

 

首先定义了视图中使用的模型类型是Student,这样LabelFor强类型辅助方法就可以从模型元数据中获取需要显示的文本。

 

页面打开时,由于并未传入任何模型对象,所以Model为空对象,如下所示:

所以页面上默认的输入框都是空的,截图中是作者输入值后的效果。

 

Html.BeginForm()会在页面上生成一个form标签,默认的提交地址还是当前页面(action=/Students/Create),默认的请求方法是post,如下所示:

 

因此,点击[Create]按钮时,会发出一个POST请求到后台,对应于Students控制器的Create方法。

保存数据与模型绑定

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

[HttpPost] [ValidateAntiForgeryToken] )] Student student) { if (ModelState.IsValid) { db.Students.Add(student); db.SaveChanges(); ); } return View(student); }

 

 

这里面有两个安全措施:

1.     ValidateAntiForgeryToken:用来阻止CSRF(跨站请求伪造)。

2.     Bind:用来阻止Over-Posting(过多提交攻击)。

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

 

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

 

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

 

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

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

 

 

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

 

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

 

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

 

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

 

小结

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

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑 - 路过秋天

    ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑

    2016-11-20 16:00

  • 在ASP.NET Core中使用Angular2,以及与Angular2的Token base身份认证 - 微软一站式示

    在ASP.NET Core中使用Angular2,以及与Angular2的Token base身份认证

    2016-11-20 15:00

  • ASP.NET Core 之 Identity 入门(二) - Savorboard

    ASP.NET Core 之 Identity 入门(二) - Savorboard

    2016-11-16 13:00

  • ASP.NET Core 之 Identity 入门(一) - Savorboard

    ASP.NET Core 之 Identity 入门(一) - Savorboard

    2016-11-07 15:00

网友点评
;