• 1401/06/22

فعال سازی حساب کاربر :

با سلام 

برای فعال سازی ایمیل کاربر بعد از ثبت نام  در کنترلر :



 public async Task<IActionResult> ActiveEmailAccount(EmailActiveAccountViewModel active)
        {
                ViewBag.IsActive = await _userService.ActiveAccount(active);
        
            return View(active);
        }

وقتی می خوام چک کنم ببینم تابع درست کار میکنه در این لینک 

هر کاری میکنم ورودی null میگیرد

میدونم سوال خیلی مبتدی است ولی میخوام مغهوم view bag رو توی ویو درک کنم اول از همه 

.و اینکه توی ویو وقتی if  گذاشتیم از ویو به کنترلر باید برود دیگه ؟ پس چرا وقتی این لینک رو میزنم که برم تریس کنم همش null داخل میشه ؟

کد : از داخل دیتا بیس برداشتم

https://localhost:44385/account/ActiveEmailAccount/ddd8915deba74659be3ca89fdc118f14

سرویس:

  public async Task<ActiveEmailResult> ActiveAccount(EmailActiveAccountViewModel active)
        {
            var activeEmailExist=await _userRepository.CheckEmailActiveCode(active.EmailActiveCode);

            var user = await _userRepository.GetUserByEmail(active.EmailActiveCode);
          
            if (activeEmailExist)
            {
             
              
                user.UserState = UserState.Active;
                _userRepository.UpdateUser(user);
                await _userRepository.SaveChange();
                return   ActiveEmailResult.Success;
            }

            return ActiveEmailResult.NotActive;
        }

 

ویو مدل:


        [Display(Name = "عنوان")]
        [Required(ErrorMessage = "لطفا {0} را وارد کنید")]
        [MaxLength(200, ErrorMessage = "{0} نمی تواند بیشتر از {1} کاراکتر باشد .")]
        public string EmailActiveCode { get; set; }

        public enum ActiveEmailResult
        {
            Error,
            NotFound,
            Success
        }
        

و داخل ویو هم اینه :

 @model AryanITC.Domain.ViewModels.Account.EmailActiveAccountViewModel
 ....
 
<div class="container">
        @if (ViewBag.IsActive)
        {
            <div class="alert alert-success"> .حساب شما با موفقیت فعال شد</div>
            <p>
                <a href="/login"></a>
            </p>
        }
                else
        {
            <div class="alert alert-success"> کاربری با مشخصات ارسال شده یافت نشد.</div>
        }
    </div>
  • 1401/06/24
  • ساعت 11:19

در واقع هم سوالم اینه چرا null  بر میگرده همش ؟ چی رو اشتباه دادم که از ورودی نمی گیره ؟

 

و اینکه وقتی خروچی تابع اصلی ActiveEmailResult.Error  است الان این دیکه true/false  نیست درسته ؟ چی باید دقیقا چک بشه در ورودی؟و چطوری ؟ با viewdata/viewbag?


  • 1401/06/24
  • ساعت 20:56

سلام دوست عزیز وقت بخیر 

ورودی های اکشن شما نال همشون؟


  • 1401/06/24
  • ساعت 20:59

بله هر کاری میکنم حتی rout  هم می دم موقع برک پوینت گذاشتن اصلا active code که از توی دیتا بیس اوردم برای تست وارد کنترلر نمیشه . و همه اش null وارد میشه : مثال:


https://localhost:44385/account/ActiveEmailAccount/8e8d24e8635a4c229ae03dfcbbf919ac

 

ورودی هم ویو مدل تعریف کردم کهه فقط یه string هست به نام EmailActiveAccountViewModel 

 

    public class EmailActiveAccountViewModel
    {

 
        public string EmailActiveCode { get; set; }

    }
  
    public enum ActiveEmailResult
    {

        Success,
        NotActive,
        Error,
    }

 

 

 


  • 1401/06/25
  • ساعت 13:04

دوست من route ای که برای action تعریف کردین رو لطفا بفرستید


  • 1401/06/25
  • ساعت 14:22

اصلا route  میذارم که وارد نمی شه ولی برمیدارم وارد میشه برک پوینت و null

 و چون تابع اصلا خروجی ای نداره httpget  هست دیگه درسته ؟ که اونم نمی دارم

 [Route("Active")]

 

 


  • 1401/06/25
  • ساعت 14:41

استاد گویا باید لینک رو این طوری چک کنیم:

 

https://localhost:44385/active?EmailActiveCode=8e8d24e8635a4c229ae03dfcbbf919ac

این طوری می کنم درسته و وارد میشه توی تابع  و user state  هم تغییر میکنه . یعنی درست انحام میشه .

 

فقط الان سوالم اینه که چون توی کنترلر چک کردم با سوییچ کیس 

دیگه تو ویو نباید این حالت ها چک بشه؟ 

چیزی که تو ویو نمایش داده میشه فقط کلمه success/ error/ notfound  هست با هر جی داخل تگ p نوشته شده

چطور میشه برای اینها پیغام تعریف کرد؟

توی enum هم display  میدم نمیشه

 

استاد این برای mvc هست یا میشه اینجا توی ویوو هم استفاده کرد که همون متن خطا توی کنترلر رو بیاره:

 

@ViewData.ModelState["CustomError"].Errors[0].ErrorMessage 

  • 1401/06/26
  • ساعت 11:44

کاربرگرامی ! لطفا به پیام صوتی زیر گوش دهید.


  • 1401/06/28
  • ساعت 18:53

خیلی حیلی ممنون چقدر عالی قسمت rout  رو توضیح دادید کاملا متوجه شدم


logo-enamadlogo-samandehi