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") 来达到用样效果。 
     
    使用客户端验证,在提交的时候就可以验证输入,无需提交给服务器,不需要页面刷新,
  • 相关阅读:
    自己搭建一个vue项目
    nodejs 后台开发入门
    bootstrap table入门例子
    datatable入门
    猜数字案例
    Cookie
    管理系统案例
    PHP操作数据库(以MySQL为例)
    数据库(以MySQL为例)
    案例:音乐列表
  • 原文地址:https://www.cnblogs.com/grkin/p/3301611.html
Copyright © 2011-2022 走看看