سلام من توی layout صفحه یه قسمت عضویت در خبرنامه دارم پارشیال هست که با کد
@Html.Action("NewsLatter", "Home")
توی تمام صفحه ها لود میشه
حالا مشکل اینجاست که توی صفحه های دیگه که مثلا صفحه ثبت نام در سایت هست کلید ثبت رو میزنم ارور

رو میده
دیگه دیوانه ام کرده
public ActionResult NewsLatter()
{
return PartialView();
}
[HttpPost]
[AllowAnonymous]
public ActionResult NewsLatter(NewsLatter newsLatter, string email)
{
if (_newsLatterRepository.GetNewsLatterByEmail(newsLatter.EmailAdressNewslatter))
{
TempData["MessageHeader"] = "عدم ثبت";
TempData["AlertMessage"] = "ایمل شما در سیستم موجود است";
return PartialView(newsLatter);
}
else
{
if (!ModelState.IsValid) return Redirect("/");
newsLatter.Ip = _userIp;
newsLatter.DateTime = DateTime.Now;
newsLatter.EmailAdressNewslatter = email;
_newsLatterRepository.InsertNewsLatter(newsLatter);
_newsLatterRepository.Dispose();
_db.Dispose();
TempData["MessageHeader"] = "ثبت موفق";
TempData["AlertMessage"] = "ایمل شما با موفقیت ثبت گردید";
return PartialView();
}
}
اینم کد کنترلرم
ممنون میشم راهنماییم کتید
احتمالا 2 تا تگ فرم داخل هم قرار گرفته اند
در اون فرما باید خاصیت Action را پر کنید و یا جداشون کنید
نه من چک کردم 2 تگ فرم وجود نداره اصلا کلا توی layout و باقی view ها یدونه هم ندرم
اینم کد partialview هست
@model DataLayer.NewsLatter
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="widget widget_text push-down-30">
<h6 class="footer__headings">خبرنامه ایمیلی</h6>
<div class="textwidget" style="margin-bottom: 5px">
<span class="wpcf7-form-control-wrap your-name">
@Html.EditorFor(model => model.EmailAdressNewslatter, new { htmlAttributes = new { @class = "wpcf7-form-control wpcf7-text", placeholder = "عضویت در خبرنامه" } })
@Html.ValidationMessageFor(model => model.EmailAdressNewslatter, "", new { @class = "text-danger" })
</span>
</div>
<div class="textwidget">
<input type="submit" value="ثبت ایمیل" class="wpcf7-submit btn btn-primary" />
</div>
</div>
}
توی کد های پست اول آیا قسمت return درسته ؟
چون این رو مثلا میزارم return null باقی view ها درست میشن اما خود خبرنامه دیگه درست کار نمیکنه !
این رو میشه راهنماییم کنید
متن خطا به شما می گوید شما در زمان رندر کردن یک child اکشن نمیتوان عملیات Redirect کردن رو انجام بدید به همین علت اجرا نمی شود شما درکدتون این کار رو انجام نداده اید پس معلوم میشود که این کار توسط قسمتی دیگر انجام می شود با بررسی کد شما متوجه شدم که شما بالای اکشن خود از صفت AllowAnonymous استفاده نکرده اید و این Redirection مربوط به احراز هویت می باشد و میخواد شما را به صفحه لاگین منتقل کند که این کار در child اشکن ها امکان پذیر نیست.
من متوجه نشدم دقیقا
من الان بالای اکشن Post از صفت AllowAnonymous استفاده کردم ! الان بالای اکشن get هم استفاده کردم ولی بازم همون ارور رو میده .
من فکر میکنم مشکل از redirect هست که خودتون هم اشاره کردید.
چون من redirect null میزارم باقی صفحه ها دیگه ارور نمیدن ولی وقتی توی خبرنامه عضو میشم و ثبت رو میزنم میفرسته منو یه صفحه خالی
الان راه حل من چیه ؟
نباید در Child اکشن Redirect کنید تنها مشکل شما همینه. در Partial View شما هم مشاهده میشود که کنترلر و نام اکشن رو به فرم نداده اید!
@using (Html.BeginForm())
پروژه را دیباگ کنید و بررسی کنید در کل فرآیند در کدام قسمت Redirect شدن انجام می شود. اگر موفق به انجام آن نشدید میتونید کدتون رو در GitHub قرار بدید تا بررسی کنیم.
ممنون از شما توی خصوصی براتون پیام فرستادم و آدرس git رو فرستادم لطفا چک بفرمایید
سپاس
کدی که قرار داده اید قابل اجرا نیست و بنده نمیتوانم آن را debug کنم. بهترین کار در این شرایط این است محل Redirect شدن را پیاده کنید و آن را جایگزین فرآیند دیگری کنید.
برای منم همین ارور رو میداد ، فقط کافیه نام کنترلر و اکشن رو به فرم اعمال کنیم و درست میشه
using (Html.BeginForm("َActionName", "ControllerName"))
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)