مرجع تخصصی برنامه نویسان

بزرگترین انجمن برنامه نویسان فارسی زبان

مشکل required validation

دوشنبه, 23 فروردین 1395 09:34

مشکل required validation

سلام خسته نباشید ، ممنون میشم یک راحل برای من در این مورد بگید مشکل من در مورد [Required] گذاشتن در model هست فرض کنیم ما یک model بنام user داریم که توش 10 تا فیلد هستش بعضی از این فیلد ها باید required باشه بعضی ها نه( برای چک کردن validation server در کنترل توسط modelstate.isvalid ) حالا ما میخوایم یک کنترلر ثبت نام بنویسیم، ما توسط Model که همان user هست یک view درست می کنیم که توش 10 تا فیلد هست 5 تاش که در model user ما required گذاشتیم تا اینجا همه چیز بر وقف ما هست validation سمت سرور ما کار میکند و error های اون رو نشون میدهد. حالا از این جا مشکل شروع میشه ما می خوایم یک کنترلر login درست کنیم توسط model که همان user هست، یک view درست می کنم و مثلا username و password را در view نشان میدهم من نمیخوام 5 تا فیلد required استفاده کنم اینجا من به 2 فیلد required نیاز دارم وقتی که modelstate.isvalid میزنم میگه شما باید 3 تای دیگر رو پر کنید مجبور میشم دستی آن 3 تا فیلد را درست کنم شاید این مثال یکم ضعیف باشه ولی من خواستم منظورم رو به شما برسونم حالا راه حل چیست؟ راه حلی که من به ذهنم رسید اینه که تمام Model ها رو اصلا بهشون required ندم بجاش بیام یک پوشه تو Model بسازم بنام validator بعد توش انواع اقسام کلاس مثل login,register,editusers ... بسازم که توش از required استفاده کنم وقتی دیتا رو به کنترلر پاس دادم چک شد اوکی شد یک شی از user درست کنم و دیتا رو به user اضافه کنم و user رو توسط دستورات EF سیو کنم آیا این درسته ؟
دوشنبه, 23 فروردین 1395 21:06

سلام شما برای view مثل login باید یک کلاس جدید درست کنید نمیدونم چیزی از ViewModel ها میدونید یا نه این کلاس ها صرفا برای اینجور کار هاست ینی به صورت جدول در دیتا بیس در نظر گرفته نمیشوند

نگاه کنید الان این یک LoginViewModel هست:

public class LoginViewModel
    {
        [Display(Name = "ایمیل")]
        [EmailAddress(ErrorMessage = "فرمت نادرست")]
        [Required(ErrorMessage = "*")]
        public string EmailAddress { get; set; }
        [Display(Name="کلمه عبور")]
        [Required(ErrorMessage = "*")]
        [DataType(DataType.Password)]
        public string Password { get; set; }
        [Display(Name="مرا به خاطر بسپار")]
        public bool KeepMe { get; set; }
    }

و برای متد ورود هم این رو میشه نوشت :

   public  ActionResult Login(LoginViewModel login)
        {
            if (ModelState.IsValid)
            {
                
                var logined = db.Members.Where(s => s.EmailAddress == login.EmailAddress && s.Password == login.Password).FirstOrDefault();
                if (logined != null)
                {     
                        FormsAuthentication.SetAuthCookie(logined.Id.ToString(), login.KeepMe);
                        return RedirectToAction("Index", "Home");
                }
                ModelState.AddModelError("", "ایمیل یا کلمه عبور اشتباه است");
                //return RedirectToAction("Login");
            }

            return View(login);
        } 

 

کسانی که از این پست تشکر کرده اند : plus1319,
ﺳﻪ شنبه, 24 فروردین 1395 14:45

ممنون دوست عزیز منم همین کار و کردم فقط شک داشتم که برطرف شد

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید