当前位置: 代码迷 >> VC/MFC >> mvc4验证机制、同伴类共享源数据信息
  详细解决方案

mvc4验证机制、同伴类共享源数据信息

热度:129   发布时间:2016-05-02 03:46:19.0
mvc4验证机制、伙伴类共享源数据信息

一,mvc前后台验证

自定义属性标签MyRegularExpression

using System;using System.Collections.Generic;using System.ComponentModel.DataAnnotations;using System.Linq;using System.Web;namespace MvcAjaxValidate.Models{    public class MyRegularExpression:RegularExpressionAttribute    {        //为了多次修改正则,我们直接写一个类,只改这个地方就好//勿忘global文件        //DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(MyRegularExpression), typeof(RegularExpressionAttributeAdapter));        public MyRegularExpression() : base(@"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$") { }    }}

要起作用,需要在global文件注册适配器

     DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(MyRegularExpression), typeof(RegularExpressionAttributeAdapter));

 

自定义model:

using System;using System.Collections.Generic;using System.ComponentModel.DataAnnotations;using System.Linq;using System.Web;using System.Web.Mvc;namespace MvcAjaxValidate.Models{    public class DemoEntity    {        [Required(ErrorMessage = "*必填")]        public int id { get; set; }        [StringLength(10, ErrorMessage = "*长度小于10")]        //[RegularExpression(@"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$", ErrorMessage = "必须邮箱")]        [MyRegularExpression(ErrorMessage = "必须邮箱")]        public string name { get; set; }       // [Range(5, 10,ErrorMessage="5-10")]//数值,而不是长度                [StringLength(5,ErrorMessage="最大5个字符")]        //[MinLength(2,ErrorMessage="最小2个字符")]//不起作用,改成正则形式        [RegularExpression(@"^.{2,}", ErrorMessage = "最小2个字符")]        [DataType(DataType.Password)]        public string password { get; set; }        [DataType(DataType.Password)]        [Compare("password", ErrorMessage = "密码要一致")]        public string passwordRe { get; set; }    }}

controller action

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using MvcAjaxValidate.Models;namespace MvcAjaxValidate.Controllers{    public class DemoEntityController : Controller    {        //        // GET: /DemoEntity/        public ActionResult create(DemoEntity demo)        {            if (ModelState.IsValid)            {                            }            return View();        }    }}

view(create强类型视图)

@model MvcAjaxValidate.Models.DemoEntity@{    Layout = null;}<!DOCTYPE html><html><head>    <meta name="viewport" content="width=device-width" />    <title>create</title></head><body>    <script src="~/Scripts/jquery-1.7.1.min.js"></script>    <script src="~/Scripts/jquery.validate.min.js"></script>    <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>    <script>            function complete() {            alert(1)        }    </script>    @using (Ajax.BeginForm("create", new AjaxOptions() {HttpMethod="post", Confirm="ok?" , OnComplete="complete"}))    {        @Html.ValidationSummary(true)            <fieldset>            <legend>DemoEntity</legend>                <div class="editor-label">                @Html.LabelFor(model => model.name)            </div>            <div class="editor-field">                @Html.EditorFor(model => model.name)                @Html.ValidationMessageFor(model => model.name)            </div>                <div class="editor-label">                @Html.LabelFor(model => model.password)            </div>            <div class="editor-field">                @Html.EditorFor(model => model.password)                @Html.ValidationMessageFor(model => model.password)            </div>                <div class="editor-label">                @Html.LabelFor(model => model.passwordRe)            </div>            <div class="editor-field">                @Html.EditorFor(model => model.passwordRe)                @Html.ValidationMessageFor(model => model.passwordRe)            </div>                <p>                <input type="submit" value="Create" />            </p>        </fieldset>    }        <div>        @Html.ActionLink("Back to List", "Index")    </div></body></html>

二,常为ef自动生成实体类采用伙伴类的技术验证

using System;using System.Collections.Generic;using System.ComponentModel.DataAnnotations;//...using System.Linq;using System.Web;namespace MvcAjaxValidate.Models{   //伙伴类的技术,共享源数据信息    //防止ef实体修改后,标签出被冲掉,我们换一个地方写。ef变 标签写到外面了,就不会丢了    //让实体类和目标类共享信息,在这个类的所有属性,目标类就会有    //这个类和目标类属性名一样哦    //实体类和目标类要在一个命名空间!!!!!!!!!!!!!!!!    [MetadataType(typeof(MetaTypeShare))]    public partial class UserInfor    {    }    //目标类    public class MetaTypeShare    {        public int ID { get; set; }        [Required(ErrorMessage="必填")]        public string UName { get; set; }        public string UPassword { get; set; }        public Nullable<System.DateTime> USubTime { get; set; }        public Nullable<System.DateTime> ULastMoltifyTime { get; set; }        public Nullable<System.DateTime> ULastLoginTime { get; set; }        public string UEmail { get; set; }        public string UAddress { get; set; }        public string UPhone { get; set; }        public string URemark { get; set; }        public Nullable<short> Usex { get; set; }        public Nullable<short> UDelFlag { get; set; }        public Nullable<int> UErrorCount { get; set; }    }    }