با سلام.من در کنترلر از modelstate.isvalid برای اعتبار سنجی داده های ارسالی استفاده کردم .اما برای هردوحالت داده های معتبر و غیر معتبر (براساس data annotation های کلاس مدل)مقدار true برای modelstate برمیگرده.فضای نام ها و ریپوزیتوری مشکلی نداره.در پارامتر متد کنترلر هم از نوع کلاس مدل استفاده کردم.کد کنترلر در زیر درج شده.لطفا راهنمایی بفرمایید [HttpPost] public ActionResult register (user myuser) { usersRepository bluser = new usersRepository(); if (ModelState.IsValid) { if (bluser.Add(myuser)) { return JavaScript("alert('ثبت شد');"); //موفق } else { return JavaScript("alert('ثبت نشد');"); //ناموفق } } else { return JavaScript("alert('خطای مقدار');"); //خطای مقداری }
با سلام.من در کنترلر از modelsatae.isvalid برای اعتبارسنجی داده های ارسالی فرم استفاده کردم.اما در هردو حالت داده های معتبر و غیر معتبر(براساس data annotation های کلاس مدل)مقدار true برای modelstateبرمیگرده .فضای نام ها وریپوزیتوری مشکلی نداره و برنامه موقع بیلد اروری نداره.در پارامتر متد کنترلر هم از نوع کلاس مدل استفاده کردم.کد کنترلر در تاپیک درج شده لطفا راهنمایی بفرمایید
صفت های مدل را بررسی کردید ؟
به احتمال زیاد مشکل از آنجاست
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.ComponentModel.DataAnnotations; using System.ComponentModel; using System.Web.Mvc; using my_Eshop.Models.domain_models; namespace my_Eshop.Models.Entitymodels { internal class UsersMetaData { [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="نام کاربری/ایمیل")] [RegularExpression(".+\\@.+\\..+",ErrorMessage="لطفا ایمیل را به درستی وارد کنید")] public string username { get; set; } [Required(ErrorMessage="رمز عبوررا واردکنید",AllowEmptyStrings=false)] [DisplayName("رمز عبور")] [Display(Name="رمز عبور")] [DataType(DataType.Password)] public string password { get; set; } [DisplayName("تاریخ تولد")] [Display(Name="تاریخ تولد")] public Nullable<System.DateTime> birthdate { get; set; } [DisplayName("تلفن همراه")] [Display(Name="تلفن همراه")] [RegularExpression(@"^0?9[123]/d{8}$",ErrorMessage="تلفن همراه را به درستی وارد کنید")] public string mob { get; set; } [DisplayName("شماره تماس ثابت")] [Display(Name="شماره تماس ثابت")] public string tel { get; set; } [DisplayName("جنسیت")] [Display(Name="جنسیت")] public bool gender { get; set; } [ScaffoldColumn(false)] public byte status { get; set; } } namespace my_Eshop.Models.Entitymodels { [MetadataType(typeof(UsersMetaData))] public partial class user{} } }
این کلاس مدل هست البته metadata
خب MetaData به مدل اصلی Map شده ؟
در انتهای همین کدmap شده -سه سطر آخر
مشکل حل شد.قسمت الحاق باید به صورت زیر باشد.فضای نام مربوطه اشتباه بود.
namespace my_Eshop.Models.domain_models { [MetadataType(typeof(my_Eshop.Models.Entitymodels.UserMetaData))] public partial class user { } }
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)