MVC 模型验证
2018-06-22 06:19:04来源:未知 阅读 ()
ASP.NET MVC框架提供了数据验证的API,称为"模型数据注解"或“模型元数据”,使我们可以使用声明语法在模型中指定验证的规则,常见的验证API如下:
数据验证API | 示例 | 说明 |
Compare | [Compare("MyOtherProperty")] | 两个属性值必须相同 |
Range | [Range(10,20)] | 属性值必须在指定的数据范围之内 |
RegularExpression | [RegularExpression("patttern")] | 属性值必须匹配正则表达式 |
Required | [Required] | 属性值必须非空或不能只是空格 |
StringLength | [StringLength(10)] | 属性值长度不能超过给定的最大长度 |
数据验证API位于using System.ComponentModel.DataAnnotations;命名空间。
Movie.cs
using System.ComponentModel.DataAnnotations; //引用命名空间 //影片信息类 public class Movie { //影片名称 [Display(Name = "影片名称")] [Required(ErrorMessage = "“{0}”必须填写")] public string Title { get; set; } //上映时间 [Display(Name = "上映时间")] [Required(ErrorMessage = "“{0}”必须填写")] [DataType(DataType.Date)] public DateTime ReleaseDate { get; set; } //光盘售价 [Display(Name = "光盘售价")] [Required(ErrorMessage = "“{0}”必须填写")] [Range(typeof(decimal),"1","100",ErrorMessage = "“{0}”不在1-100以内")] //[DataType(DataType.Currency)] public decimal Price { get; set; } //评分 [Display(Name = "评分")] //[Required(ErrorMessage = "“{0}”必须填写")] //[StringLength(10, ErrorMessage = "“{0}”的长度不能超过10")] [RegularExpression(@"^[0-9]*[1-9][0-9]*$", ErrorMessage = "“{0}”的长度不能超过2")] public string Rating { get; set; } }
Index.cshtml
<body> <h1>添加电影信息</h1> @using (Html.BeginForm()) { <p>影片名称:@Html.TextBox("Title")</p> <p>上映时间:@Html.TextBox("ReleaseDate")</p> <p>光盘价格:@Html.TextBox("Price")</p> <p>影片评分:@Html.TextBox("Rating")</p> <input type="submit" id="submit" value="提交" /> @Html.ValidationSummary() <p>@ViewBag.Info</p> } </body>
HomeController.cs
public class HomeController : Controller { //GET访问 /Home/Index public ActionResult Index() { return View(); } //模型绑定 //Post访问 /Home/Index [HttpPost] public ActionResult Index(Movie m) { if (ModelState.IsValid) { ViewBag.Info = "电影" + m.Title + " ,上映时间" + m.ReleaseDate + " ,评分" + m.Rating + " ,价格" + m.Price; } return View(); } }
运行效果图:
解释:
在模型对象Movie类中,使用“数据注释”的方式设定了每个属性的验证行为。
在视图中,我们使用HTML辅助方法创建表单。同时,Html.ValidationSummary方法可以再页面上集中显示验证提示。
在HomeController,创建了两个版本的Index操作方法,无参数的Index用于显示页面,带参数的Index负责处理Post请求。ModelState.IsValid属性检查模型对象每个属性的验证规则,如果验证通过,则ModelState.IsValid返回True,否则返回False。
提醒:
如果需要实现JavaScript客户端验证,我们可以使用JQuery Validate验证插件。我们知道如果视图实现了客户端验证,一旦检测输入错误,页面被禁止提交,表单不会发送到服务端,HTTP POST版本的Index方法将不会被调用。但是客户端验证不能替代服务端验证,如果浏览器禁用JavaScript或发生网络攻击,客户端验证将完全失去作用,此时服务端的模型验证不了或缺,ModelState.IsValid方法将担当审查的重任,决定验证是否验证通过。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Asp.net MVC SignalR来做实时Web聊天实例代码 2020-03-29
- ASP.NET MVC中jQuery与angularjs混合应用传参并绑定数据 2020-03-29
- ASP.NET MVC Admin主页快速构建 2020-03-23
- Asp.Net MVC4通过id更新表单内容的思路详解 2020-03-19
- MVC数据验证详解 2020-03-14
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash