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

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

کاربر سایت

plus1319

عضویت از 1394/06/03

مشکل required validation

  • دوشنبه 23 فروردین 1395
  • 09:34
تشکر میکنم
سلام خسته نباشید ، ممنون میشم یک راحل برای من در این مورد بگید مشکل من در مورد [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 سیو کنم آیا این درسته ؟

پاسخ های این پرسش

تعداد پاسخ ها : 2 پاسخ
کاربر سایت

saleh212

عضویت از 1394/12/04

  • دوشنبه 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

عضویت از 1394/06/03

  • سه شنبه 24 فروردین 1395
  • 14:45

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

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)