اگر برای اکتیو کردن ایمیل کاربر از یک ویو مدل جدا استفاده کنیم
یعنی ورودی تابع activeAccount یک استرینگ و ایمیل نباشد و به جای ان یک ویومدل باشد:
public class EmailActiveAccountViewModel
{
public string EmailActiveCode { get; set; }
}حالا پس از ثبت نام کاربر که با موفقیت انجام شود و چون تابع register ویو مدل خود را دارد ( ویو مدل رجیستر )
حالا پس از موفقیت در ثبت نام که مثلا به صفخه جدید برود به نام sucessRegister :
این صفحه چه ویو مدلی باید بگیرد؟
چون اکر رجیستر را بکیرد که داخل ان activeemailCode نداریم
اگر ویومدل ActiveEmailAccount را بگیرد که فقط یک کد ActiveEmailCode دلاخل دیتا بیس را دارد؟
در این حالت چطور باید کنترل کنیم ثبت نام با موفقیت را ؟
جواب : صفحه همان ویو مدل RegisterUserViewModel را می گیرد ولی برای اینکه بتوانیم activeCode رو هم داشته باشیم با viewBag میبریمش توی ویوش درسته؟
public async Task<IActionResult> Register(RegisterUserViewModel registerUserViewModel)
{
var result = await _userService.RegisterUser(registerUserViewModel);
switch (result)
{
case RegisterUserResult.Error:
ModelState.AddModelError(string.Empty, "شکست");
TempData[ErrorMessage] = "شکست";
break;
case RegisterUserResult.UserExist:
ModelState.AddModelError("Email", "بجه قبلا ثبت نام کردید");
break;
case RegisterUserResult.Success:
var user = await _userService.GetUserByEmail(registerUserViewModel.Email);
var x = user.EmailActiveCode;
ViewBag.active = x;
return View("SuccessRegister",registerUserViewModel);
}
return View(registerUserViewModel);
}view:هم میشه این که با خودش اون activeCode رو ببره ؟ درسته ؟
<div class="alert alert-success">
<h3> @Model.FirstName @Model.LastName عزیز !</h3>
<p>ثبت نام شما با موفقیت انجام شد ، ایمیلی حاوی لینک فعالسازی به ایمیل "@Model.Email" ارسال شد .</p>
<p>
<a href="https://localhost:44385/active?EmailActiveCode=@ViewBag.active">فعالسازی حساب کاربری</a>
</p>
</div>در این حالت تا اینجا همه چی درسته و activecode هم به درستی به تابع ActiveEmailAccount میره و یوزر ثبت نام هم میشه براش ایمیل هم میره ولی به تابع فعالسازی اکانت که میرسه و اکانت را فعال نمی کند!
در حالی که به تنهایی خود تابع را چک و کنترل می کنم با برک پوینت دقیق یوزر را می گیرد و فعال هم میکند
فکر میکنم مشکل در انتقال اکتیو کد هست؟ چون تابه خودش نوع ورودیش EmailActiveAccountViewModel است؟
سلام دوست عزیز وقتتون بخیر
شما میتونید برای صفحه فعالسازی حساب کاربری هم یک ویو مدل درست کنید و اطلاعات رو داخل اون ویو مدل بریزید که لازم نباشه از ViewBag استفاده کنید و بعد برای دکمه فعالسازی چک کنید که url شما وجود داره یا نه ، منظورم اینه که url شما به درستی وارد شده یا نه