zoukankan      html  css  js  c++  java
  • Asp.net MVC4 Step by Step (3)-数据验证

    ASP.NET MVC把数据验证集成到了请求处理过程中,控制器操作可以通过查询ModelState 来检查请求是否有效, 下面判断了ModelState的有效性后进行“保存或返回”操作。

     
            [HttpPost]
            public ActionResult Create(Auction auction)
            {
                if (ModelState.IsValid)
                {
                    var db = new EbuyDataContext();
                    db.Auctions.Add(auction);
                    db.SaveChanges();
     
                    return RedirectToAction("Details", new { id = auction.Id });
                }
     
                return View(auction);
            }

    除了以上的验证手段, 微软还提供了非常有效便捷的数据验证API, 称为数据标注。 开发人员可以直接标记在数据对象的属性上。 这些标记属性提供了设置验证规则的声明方式。

    在Auction.cs文件里的Model代码里这样声明

        public class Auction
        {
            public long Id { get; set; }
            [Required]
            [StringLength(50,ErrorMessage = "Title 长度不能超过50 ")]
            public string Title { get; set; }
            [Required]
            public string Description { get; set; }
            [Range(1,10000,ErrorMessage = " 拍卖价格必须最小为1个单位")]
            public decimal StartPrice { get; set; }
            public decimal CurrentPrice { get; set; }
            public DateTime StartTime { get; set; }
            public DateTime EndTime { get; set; }
        }

    除了标记字段为必须的(Required)外, 还可以确保字符长度满足了最短长度的StringLengthAttribute属性标记的要求。还可以用RangeAttribute标记属性验证范围, 数据标记还提供ErrorMessage属性,可以返回用户自定义的错误信息。


    在表单视图用Html.ValidationMessage(string modelName)帮助方法,可以在相关的控件右边渲染出验证有关的错误提示信息。

    @model Ebuy.Models.Auction
    @{
        ViewBag.Title = "Create";
    }
    <h2>
        Create Auction</h2>
    @using (Html.BeginForm())
    {
        @Html.ValidationSummary();
        <p>
            @Html.LabelFor(model => model.Title)
            @Html.EditorFor(model => model.Title)
            @Html.ValidationMessageFor(model => model.Title);
        </p>

    以上都是服务端的验证方法,还可以使用客户端验证的方法

    ASP.NET MVC 框架从第三版开始提供了客户端验证支持, 默认是启用的,也可以在配置文件W


    eb.config里设置启用和关闭这项功能

    <configuration> 
      <appSettings>
        <add key="ClientValidationEnabled" value="true" />
        <add key="UnobtrusiveJavaScriptEnabled" value="true" />
      </appSettings>
    </configuration>

    进行客户端验证,需要在视图文件里引用jQuery验证插件:

    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobstrusive.min.js")" type="text/javascript"></script>
    VisualStudio可以使用        @Scripts.Render("~/bundles/jquery-val") 来达到用样效果。 
     
    使用客户端验证,在提交的时候就可以验证输入,无需提交给服务器,不需要页面刷新,
  • 相关阅读:
    Coded UI Test(二)创建一个Coded UI Test
    Coded UI Test(一)概述
    面向接口编程思想与实现可维护的代码 (一)
    KMP算法字符串模式匹配算法
    新的博客,新的起点
    第十三章:字符串 《Thinking in java》学习笔记
    稀疏矩阵三元组表来压缩存储及转置
    eclipse svn的使用+小组开发
    第十一章:持有对象 《Thinking in java》学习笔记
    双端队列(deque)课堂跳了的内容
  • 原文地址:https://www.cnblogs.com/grkin/p/3301611.html
Copyright © 2011-2022 走看看