سلام من در چند جا از برنامم از validation dataType استفاده کردم ولی هیچ کدوم تو هیچ جای برنامه کار نمبکنن
ممنون میشم کمکم کنیدکه مشکل حل بشه
به احتمال زیاد رفرنس های Jquery Validation در صفحه وجود ندارد
پس باید سمت سرور با ModelState.IsValid مشخص بشه دیگه ؟
تو اونجا هم ارور نمیده بقیه Validation ها رو می سنجه ولی DataType رو نمیسنجه
کد کامل مدل و ویو را قرار دهید
مدل
[ScaffoldColumn(false)] [Bindable(false)] public int Id { get; set; } [Required(ErrorMessage = "نام و نام خانوادگی خود را وارد کنید", AllowEmptyStrings = false)] [DisplayName("نام و نام خانوادگی")] [Display(Name = "نام و نام خانوادگی")] [StringLength(50, ErrorMessage = "این فیلد باید حداکثر 50 کاراکتر باشد")] public string Name { get; set; } [Required(ErrorMessage = "ایمیل خود را وارد کنید")] [Display(Name = "ایمیل (نام کاربری)")] [DisplayName("ایمیل (نام کاربری)")] [RegularExpression(@"^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(\.[A-Za-z]{2,4})$", ErrorMessage = "ایمیل را بدرستی وارد کنید")] [StringLength(50, ErrorMessage = "این فیلد باید حداکثر 50 کاراکتر باشد")] public string Username { get; set; } [Required(AllowEmptyStrings = false, ErrorMessage = "رمز عبور خود را وارد کنید")] [DisplayName("رمز عبور")] [Display(Name = "رمز عبور")] [DataType(DataType.Password)] public string Password { get; set; } [Display(Name = "تاریخ تولد")] [DisplayName("تاریخ تولد")] [DataType(DataType.DateTime,ErrorMessage="فرمت تاریخ اشتباه است")] public Nullable<System.DateTime> BirthDate { get; set; } [DisplayName("شماره موبایل")] [Display(Name = "شماره موبایل")] [RegularExpression(@"(\+98|0)?9\d{9}$", ErrorMessage = "شماره موبایل را بدرستی وارد کنید")] [StringLength(50, ErrorMessage = "این فیلد باید حداکثر 50 کاراکتر باشد")] public string Mobile { get; set; } [Display(Name = "شماره تماس")] [DisplayName("شماره تماس")] [StringLength(50, ErrorMessage = "این فیلد باید حداکثر 50 کاراکتر باشد")] public string Tell { get; set; } [DisplayName("جنسیت")] [Display(Name = "جنسیت")] public bool Gender { get; set; } [ScaffoldColumn(false)] [DisplayName("وضعیت")] [Display(Name = "وضعیت")] public byte Status { get; set; } [ScaffoldColumn(false)] [DisplayName("دسترسی")] [Display(Name = "دسترسی")] public byte Access { get; set; }
ویو
@model EBtekarDl.Models.DomainModels.User @{ ViewBag.Title = "ثبت نام"; Layout = "~/Views/Shared/_LayoutHome.cshtml"; } <h2>SingUp</h2> @using (Ajax.BeginForm(new AjaxOptions {Url="/auth/singup",HttpMethod="Post" })) { @Html.AntiForgeryToken() @Html.ValidationSummary(true) <div class="form-group"> @Html.LabelFor(model => model.Name, new { @for = "exampleInputEmail1" }) @Html.TextBoxFor(model => model.Name, new { @class = "form-control", placeholder = "نام" }) @Html.ValidationMessageFor(model => model.Name) </div> <div class="form-group"> @Html.LabelFor(model => model.Username, new { @for = "exampleInputEmail1" }) @Html.TextBoxFor(model => model.Username, new { @class = "form-control", placeholder = "E-mail" }) @Html.ValidationMessageFor(model => model.Username) </div> <div class="form-group"> @Html.LabelFor(model => model.Password, new { @for = "exampleInputEmail1" }) @Html.PasswordFor(model => model.Password, new { @class = "form-control", placeholder = "پسورد" }) @Html.ValidationMessageFor(model => model.Password) @Html.LabelFor(model => model.ConfirmPassword, new { @for = "exampleInputEmail1" }) @Html.PasswordFor(model => model.ConfirmPassword, new { @class = "form-control", placeholder = "پسورد" }) @Html.ValidationMessageFor(model => model.ConfirmPassword) </div> <div class="form-group"> @Html.LabelFor(model => model.BirthDate, new { @for = "exampleInputEmail1" }) @Html.TextBoxFor(model => model.BirthDate, new { @class = "form-control", placeholder = "تاریخ تولد" }) @Html.ValidationMessageFor(model => model.BirthDate) </div> <div class="form-group"> @Html.LabelFor(model => model.Mobile, new { @for = "exampleInputEmail1" }) @Html.TextBoxFor(model => model.Mobile, new { @class = "form-control", placeholder = "موبایل" }) @Html.ValidationMessageFor(model => model.Mobile) </div> <div class="form-group"> <div class="editor-label"> @Html.LabelFor(model => model.Tell, new { @for = "exampleInputEmail1" }) </div> <div class="editor-field"> @Html.TextBoxFor(model => model.Tell, new { @class = "form-control", placeholder = "تلفن" }) @Html.ValidationMessageFor(model => model.Tell) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Gender, new { @for = "exampleInputEmail1" }) <select name="Gender"> <option value="true">مرد</option> <option value="false">زن</option> </select> </div> <p> <input type="submit" value="ثبت نام" class="btn btn-default" /> </p> }
رفرنس های Jquery در Layout هستند
تعریفش درست هستند ؟
بدون اونها کار نخواهند کرد
شما از Ajax استفاده کردید
کد زیر را در button قرار دهید
onclick="$.validator.unobtrusive.parse($('form'));"
کد کامل
<input type="submit" value="ثبت نام" class="btn btn-success pull-left" onclick="$.validator.unobtrusive.parse($('form'));" />
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)