آقای مداینی با سلام
من کلاس eshop شما امده بودم الان در پروژه ام خواستم از بازیابی پسوردی که شما استفاده کردید، استفاده کنم اما مطابق عکسی که فرستادم ایراد میگیرد در حالیکه در پروژه ای که شما نوشتید کار میکند
عکس ضمیمه نشده
متن ارور را قرار دهید
در کلاس PartialToStringClass در خط
var controller = controllerFactory.CreateController(requestContext, requiredString) as ControllerBase;
خطای زیر را میدهد ، البته من نمیخوام از activecode استفاده کنم
The controller for path '/Account/RecoveryPassword' was not found or does not implement IController.
کنترلر Account شما IController را پیاده سازی نکرده است به همین علت این خطا رخ می دهد.
نحوه فراخوانی این کلاس را قرار دهید
[HttpPost] public ActionResult RecoveryPassword(RecoveryPasswordViewModel recovery) { if (ModelState.IsValid) { var user = db.Users.SingleOrDefault(u => u.Email == recovery.Email); if (user != null) { if (user.IsActive) { string Body = PartialToStringClass.RenderPartialView("EmailSender", "RecoveryPassword", user); SendEmailGmail.Send(user.Email, "بازیابی کلمه عبور", Body); ViewBag.IsSuccess = true; } } else { ModelState.AddModelError("Email", "کاربری یافت نشد"); } } return View(recovery); }
نحوه فراخوانی کلاس
کد صحیح است
چک کنید کنترلر و اکشن مورد نظر وجود داشته باشد
من کل کارهایی که توی پروژه ایشاپ بود انجام دادم کلاسهایی که باید، اضافه کردم فقط میخوام ببینم در قسمتهای دیگه مثلا در کانفیگ ها کاری کردید که من انجام ندادم چون دوباره همان خطایی که در بالا ذکر شده است را میگیرم کد کنترلر:
public ActionResult RecoveryPassword() { return View(); } [HttpPost] public ActionResult RecoveryPassword(RecoveryPasswordViewModel recovery) { if (ModelState.IsValid) { var user = db.Personnels.SingleOrDefault(u => u.Email == recovery.Email); if (user != null) { string Body = PartialToStringClass.RenderPartialView("EmailSender", "RecoveryPassword", user); SendEmailGmail.Send(user.Email, "بازیابی کلمه عبور", Body); ViewBag.IsSuccess = true; } else { ModelState.AddModelError("Email", "کاربری یافت نشد"); } } return View(recovery); }
و کد ویو:
@model FACPSP.Models.RecoveryPassword.RecoveryPasswordViewModel @{ Layout = null; } <h2>بازیابی کلمه عبور</h2> @if (ViewBag.IsSuccess != null) { <div class="alert alert-success"> <p> ایمیلی حاوی لینک بازیابی کلمه عبور برای شما ارسال شد . </p> </div> } else { using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="form-horizontal"> <hr /> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) <div class="form-group"> @Html.LabelFor(model => model.Email, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Email, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> <div class="col-md-offset-2 col-md-10"> <input type="submit" value="ارسال لینک" class="btn btn-info" /> </div> </div> </div> } }
و کلاسهای PartialToStringClass و SendEmailGmail را اضافه کردم اما خطام رفع نشد
من کدهاتون رو چند بار خوندم و مشکلی ندیدم
کد را Trace کنید ببینید مشکل را پیدا میکنید
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)