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") 来达到用样效果。 
 
使用客户端验证,在提交的时候就可以验证输入,无需提交给服务器,不需要页面刷新,
原文地址:https://www.cnblogs.com/grkin/p/3301611.html