MVC 数据验证(检查用户名是否存在)

来源:互联网 发布:linux powershell 编辑:程序博客网 时间:2024/06/18 08:32

在应用程序下的Models文件夹中添加----》新建项--》ADO.NET实体数据模型--》然后选择模型内容--》下一步后“选择您的数据库连接”。这里我选择的数据库是sales 。然后下一步,“选择数据库对象”你可以选择你要的表,或视图,在你要的表或视图前面打钩就可以了,这里我选择的是T_UserInfo表 。新建好之后找到salesModel.edmx

点击salesModel.edmx前面的那个小三角符号后,会在salesModel.edmx下面会显示出salesModel.edmx.Designer.cs文件。打开文件就可以看到

一个方法了: public partial class salesEntities : ObjectContext

其中salesEntities就是我们创建的这个ADO模型实体类。 (注意:我这里选择的是sales数据库。所以我的实体模型类的名字是 salesEntities。而你选择的不同数据库实体模型类名是不一样的。不过都是以*****Entities结尾的)

MVC 3数据验证


ASP.NET MVC 3 —— Model远程验证

MVC4数据注解和验证

RemoteAttribute 的使用问题 检查用户名是否存在

控制器 Home

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using MvcApplication2.Models;namespace MvcApplication2.Controllers{    public class HomeController : Controller    {        //        // GET: /Home/        public ActionResult Index()        {            return View();        }        /// <summary>        /// 检查用户名是否有重复        /// </summary>        /// <param name="userName">用户在页面(视图)表单中输入的UserName</param>        /// <returns>Json</returns>        public ActionResult CheckUserName(string userName)        {            bool result = false;            using (var datas = new salesEntities())//创建一个ADO.NET实体模型。实体类模型类名称是salesEntities            {                var query = from userinfo in datas.T_UserInfo//用linq语句 查询实体模型类中T_UserInfo表                            where userinfo.Name == userName                            select new { Name= userinfo.Name };                if (query == null || !query.Any())                {                    result = true;                }                                      }                        return Json(result,JsonRequestBehavior.AllowGet);        }    }}

Model(UserInfo)

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.ComponentModel;using System.ComponentModel.DataAnnotations;using System.Web.Mvc;namespace MvcApplication2.Models{    /// <summary>    ///  这些例子就是验证的,注意此处没有客户端验证,完全是服务器端验证的,如果出错,视图会渲染再次显示,非常好用啊,很方便啊,要在以前你要写多少行代码来搞定这些繁琐无味的验证呢?微软太体恤程序员了,顶一个。    ///  在下面的例子当中,当数据发送到服务器验证不通过之后,则所有用户填写的内容在重新打开的页面后都清空了, 如果想不清空,即用户第一次填的内容还存在的话,可以return View(接受到的对象);    /// </summary>    public class UserInfo    {        public int Id { get; set; } //ID        /// <summary>        ///DisplayName:指定当前字段显示的名称        ///StringLength:指定允许的长度,括号里的第一个参数是最大长度,第二个参数是最小长度。最后一个参数是指:单字段值的长度不符合第一第二参数规定时候,提示错误的内容        ///Required:表示当前字段是必填选项,当提交的表单缺少该值就引发验证错误。括号里的AllowEmptyStrings是: 获取或设置一个值,该值指示是否允许空字符串。单值为false的时候表示当前字段的值不能为空        ///Remote:允许利用服务器端的回调函数执行客户端的验证逻辑。说白了就是支持AJAX验证。括号里的CheckUserName是Action方法。Home是控制器 ,它会调用Home控制中的CheckUserName方法来查询你所输入的用户名是否已经存在,如果存在,则提示"用户名已经存在"              /// </summary>        [DisplayName("用户名")]        [Required(AllowEmptyStrings=false, ErrorMessage="用户名不能为空")]        [StringLength(10, MinimumLength = 2, ErrorMessage = "用户名长度必须在{2}和{1}位之间")]        [Remote("CheckUserName", "Home", ErrorMessage = "用户名已经存在")]         public string UserName { get; set; } //用户名                [DisplayName("用户密码")]        [DataType(DataType.Password)] //将密码已*号的形式来显示        [Required(AllowEmptyStrings=false,ErrorMessage="密码不能为空")]        [StringLength(12,MinimumLength=6,ErrorMessage="密码长度必须在{2}和{1}位之间")]        public string UserPassword { get; set; } //用户密码        [DataType(DataType.Password)]        [Compare("UserPassword",ErrorMessage="密码不一致")]        [DisplayName("请再次确认密码")]        public string TUserPassword{get;set;}  //再次输出密码        /// <summary>        /// RegularExpression:表示当前字段的值要符合一个正则表达式。如果不能匹配,则报一个验证错误。ErrorMessage的内容就是验证错误的具体信息。        /// </summary>        [Display(Name = "邮箱")] //也可以写成  [DisplayName("邮箱")]        [Required(AllowEmptyStrings=false,ErrorMessage="邮箱不能为空")]        //[DataType(DataType.EmailAddress, ErrorMessage = "xxxxxxxx")] //其实也可以用以下的正则表达式来验证邮箱        [RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9]+\.[A-Za-z]{2,4}", ErrorMessage = "{0}的格式不正确")]        public string Email { get; set; } //邮箱        [DisplayName("请再次确认邮箱")]                [Compare("Email",ErrorMessage="两次输入的邮箱不一致")]        //[DataType(DataType.EmailAddress, ErrorMessage = "请输入有效的邮箱地址")]        public string TEmail { get; set; } //再次输入邮箱        [DisplayName("身份证")]        [RegularExpression(@"\d{17}[\d|x]|\d{15}", ErrorMessage = "身份证号码格式错误")]        public string IdentityNo { get; set; } //身份证号        /// <summary>        /// Range:用来指定数值类型值的最小值和最大值。括号里的第一个数的“最小值”第二个参数是“最大值”        /// </summary>        [DisplayName("年龄")]        [Required(AllowEmptyStrings=false,ErrorMessage="年龄不能为空")]        [Range(10, 120, ErrorMessage = "您输入的年龄不符合规范,年龄应该在{1}-{2}之间")]        public int Age { get; set; } //年龄        /// <summary>        /// DisplayFormat:用来处理属性的各种格式化选项。当属性包含空值时,可以提供可选的显示文本,也可以为包含标记的属性关闭HTML编码,还可以为运行时指定一个应用于属性值的格式化字符串。        /// </summary>        [DisplayName("金额")]        [DataType(DataType.Currency)] //Currency:表示货币值        [DisplayFormat(ApplyFormatInEditMode=true,DataFormatString="{0:c}")]        [Required(ErrorMessage = "金额不能为空")]        [Range(typeof(decimal), "20.0", "30.0", ErrorMessage = "金额在{1}和{2}之间")]        public decimal Money { get; set; } //金额        [Display(Name="手机号码")]                [DataType(DataType.PhoneNumber)]        [RegularExpression(@"((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)", ErrorMessage = "格式不正确")]        public int Phome { get; set; }        [Display(Name="生日")]        //[DisplayFormat(ApplyFormatInEditMode=true,DataFormatString="yyyy/MM/dd")]        [Required] //当前字段的值不能为空        public DateTime Birthday { get; set; } //生日        [Display(Name="备注")]        [DataType(DataType.MultilineText)] //当前字段是个多行文本        public string Remarks { get; set; } //备注    }}


View (Index)

@model MvcApplication2.Models.UserInfo@{    Layout = null;}<!DOCTYPE html><html><head>    <meta name="viewport" content="width=device-width" />    <title>Index</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>        @using (Html.BeginForm()) {        @Html.ValidationSummary(true)            <fieldset>            <legend>UserInfo</legend>                <div class="editor-label">                @Html.LabelFor(model => model.UserName)            </div>            <div class="editor-field">                @Html.EditorFor(model => model.UserName)                @Html.ValidationMessageFor(model => model.UserName)            </div>                <div class="editor-label">                @Html.LabelFor(model => model.UserPassword)            </div>            <div class="editor-field">                @Html.EditorFor(model => model.UserPassword)                @Html.ValidationMessageFor(model => model.UserPassword)            </div>                <div class="editor-label">                @Html.LabelFor(model => model.TUserPassword)            </div>            <div class="editor-field">                @Html.EditorFor(model => model.TUserPassword)                @Html.ValidationMessageFor(model => model.TUserPassword)            </div>                <div class="editor-label">                @Html.LabelFor(model => model.Email)            </div>            <div class="editor-field">                @Html.EditorFor(model => model.Email)                @Html.ValidationMessageFor(model => model.Email)            </div>                <div class="editor-label">                @Html.LabelFor(model => model.TEmail)            </div>            <div class="editor-field">                @Html.EditorFor(model => model.TEmail)                @Html.ValidationMessageFor(model => model.TEmail)            </div>                <div class="editor-label">                @Html.LabelFor(model => model.IdentityNo)            </div>            <div class="editor-field">                @Html.EditorFor(model => model.IdentityNo)                @Html.ValidationMessageFor(model => model.IdentityNo)            </div>                <div class="editor-label">                @Html.LabelFor(model => model.Age)            </div>            <div class="editor-field">                @Html.EditorFor(model => model.Age)                @Html.ValidationMessageFor(model => model.Age)            </div>                <div class="editor-label">                @Html.LabelFor(model => model.Money)            </div>            <div class="editor-field">                @Html.EditorFor(model => model.Money)                @Html.ValidationMessageFor(model => model.Money)            </div>                <div class="editor-label">                @Html.LabelFor(model => model.Phome)            </div>            <div class="editor-field">                @Html.EditorFor(model => model.Phome)                @Html.ValidationMessageFor(model => model.Phome)            </div>                <div class="editor-label">                @Html.LabelFor(model => model.Birthday)            </div>            <div class="editor-field">                @Html.EditorFor(model => model.Birthday)                @Html.ValidationMessageFor(model => model.Birthday)            </div>                <div class="editor-label">                @Html.LabelFor(model => model.Remarks)            </div>            <div class="editor-field">                @Html.EditorFor(model => model.Remarks)                @Html.ValidationMessageFor(model => model.Remarks)            </div>                <p>                <input type="submit" value="Create" />            </p>        </fieldset>    }        <div>        @Html.ActionLink("Back to List", "Index")    </div></body></html>





0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 来月经已经游了泳怎么办 月经来了要游泳怎么办 三个月宝宝趴着不会抬头怎么办 我的月经不完怎么办 游泳时怎么办能浮出水面 游泳时眼镜起雾怎么办 练瑜伽手臂变粗怎么办 孕妇喝了芬达怎么办 宫口开了但头高怎么办 整天坐着肚子越来越大怎么办 坐久了屁股变大怎么办 屁股久坐的黑印怎么办 练瑜伽小腿变粗怎么办 练瑜伽腿粗了怎么办 练完瑜伽腿粗怎么办 肚子大屁股大腿粗怎么办 甲状腺偏大弥漫性欠均匀怎么办 大腿后侧拉伤了怎么办 腰和臀部都疼怎么办 瑜伽后弯后腰疼怎么办? 吃了大蒜肝痛怎么办 练瑜伽前躯不行怎么办 月子里碰冷水了怎么办 月子手碰凉水了怎么办 月子里碰了冷水怎么办 顺产后下面会痛怎么办 产后肚子瘦不下来怎么办 出月子后臀部很疼怎么办 做月子时臀部疼怎么办 月子臀部大腿疼困怎么办 产后抱孩子腰疼怎么办 剖腹产后5年小肚子很大怎么办 压力大工作忙瘦了怎么办? 哺乳乳房一大一小怎么办 哺乳期乳房一大一小怎么办 上班之后奶少了怎么办 出了月子还流恶露怎么办? 剖腹产2年刀疤痒怎么办 刨宫产6天伤口痒怎么办 脸的皮肤油油的怎么办 狗狗子宫蓄脓怎么办