ASP.NET MVC4入门教程(六):验证编辑方法和编辑(2)

自动生成的代码,使用了Helper方法的几种简化的 HTML 标记。 Html.LabelFor 用来显示字段的名称("Title"、"ReleaseDate"、"Genre"或"Price")。 Html.EditorFor 用来呈现 HTML <input>元素。Html.ValidationMessageFor 用来显示与该属性相关联的任何验证消息。

运行该应用程序,然后浏览URL,/Movies。单击Edit链接。在浏览器中查看页面源代码。HTML Form中的元素如下所示:

<form action="/Movies/Edit/4" method="post"> <fieldset> <legend>Movie</legend> <input data-val="true" data-val-number="The field ID must be a number." data-val-required="The ID field is required." type="hidden" value="4" /> <div> <label for="Title">Title</label> </div> <div> <input type="text" value="Rio Bravo" /> <span data-valmsg-for="Title" data-valmsg-replace="true"></span> </div> <div> <label for="ReleaseDate">ReleaseDate</label> </div> <div> <input data-val="true" data-val-date="The field ReleaseDate must be a date." data-val-required="The ReleaseDate field is required." type="text" value="4/15/1959 12:00:00 AM" /> <span data-valmsg-for="ReleaseDate" data-valmsg-replace="true"></span> </div> <div> <label for="Genre">Genre</label> </div> <div> <input type="text" value="Western" /> <span data-valmsg-for="Genre" data-valmsg-replace="true"></span> </div> <div> <label for="Price">Price</label> </div> <div> <input data-val="true" data-val-number="The field Price must be a number." data-val-required="The Price field is required." type="text" value="2.99" /> <span data-valmsg-for="Price" data-valmsg-replace="true"></span> </div> <p> <input type="submit" value="Save" /> </p> </fieldset> </form>

被<form> HTML 元素所包括的 <input> 元素会被发送到,form的action属性所设置的URL:/Movies/Edit。单击Edit按钮时,from数据将会被发送到服务器。

处理 POST 请求

下面的代码显示了Edit操作方法的HttpPost处理:

[HttpPost] public ActionResult Edit(Movie movie) { if (ModelState.IsValid) { db.Entry(movie).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(movie); }

ASP.NET MVC 模型绑定 接收form所post的数据,并转换所接收的movie请求数据从而创建一个Movie对象。ModelState.IsValid方法用于验证提交的表单数据是否可用于修改(编辑或更新)一个Movie对象。如果数据是有效的电影数据,将保存到数据库的Movies集合(MovieDBContext instance)。通过调用MovieDBContext的SaveChanges方法,新的电影数据会被保存到数据库。数据保存之后,代码会把用户重定向到MoviesController类的Index操作方法,页面将显示电影列表,同时包括刚刚所做的更新。

如果form发送的值不是有效的值,它们将重新显示在form中。Edit.cshtml视图模板中的Html.ValidationMessageFor Helper将用来显示相应的错误消息。

ASP.NET MVC4入门教程(六):验证编辑方法和编辑

注意,为了使jQuery支持使用逗号的非英语区域的验证 ,需要设置逗号(",")来表示小数点,你需要引入globalize.js并且你还需要具体的指定cultures/globalize.cultures.js文件 (地址在https://github.com/jquery/globalize) 在 JavaScript 中可以使用 Globalize.parseFloat。下面的代码展示了在"FR-FR" Culture下的 Views\Movies\Edit.cshtml 视图:

@section Scripts { @Scripts.Render("~/bundles/jqueryval") <script src="https://www.jb51.net/~/Scripts/globalize.js"></script> <script src="https://www.jb51.net/~/Scripts/globalize.culture.fr-FR.js"></script> <script> $.validator.methods.number = function (value, element) { return this.optional(element) || !isNaN(Globalize.parseFloat(value)); } $(document).ready(function () { Globalize.culture('fr-FR'); }); </script> <script> jQuery.extend(jQuery.validator.methods, { range: function (value, element, param) { //Use the Globalization plugin to parse the value var val = $.global.parseFloat(value); return this.optional(element) || ( val >= param[0] && val <= param[1]); } }); </script> }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjwgzj.html