نمایش صفحه Error هنگام خطا در PartialView
سلام دوستان یک پارشیال ویو دارم که کدهاش رو به صورت زیر نوشتم. در نمایش این PartialView مشکلی ندارم.
کدهای Controller :
[HttpGet]
public IActionResult myPartial(int ID)
{
if (ID == 0)
{
Return RedirectToAction("Error","Home");
}
ViewBag.ID = ID;
return PartialView("_Follow");
}
کدهای cshtml :
<a asp-controller="ControllrtName" asp-action="myPartial" asp-route-ID="@item.ID" data-toggle="modal" data-target="#modal-action">
نمایش
</a>
خب برای نمایش PartialView مشکلی وجود نداره. اما توی Action شرط گذاشتم که اگر ID برابر با 0 بود بره به Controller با نام Home و اکشن با نام Error رو نمایش بده. ضمنا آدرس "Home/Error" در هیچ Area نیست اما اکشن متد myPartial در یک area هست.
حالا سوال این هست چجوری وقتی خطایی به وجود اومد صفحه خطا رو نمایش بدم؟ چون ظاهرا وقتی یک پارشیال ویو رو صدا میزنیم نمیشه دیگه یک ویو رو نمایش داد
پاسخ هوش مصنوعی
برای نمایش صفحه خطا هنگام بروز خطا در PartialView، می توانید از روش AJAX استفاده کنید تا پاسخ مناسب را پس از بارگذاری پارشیال ویو دریافت کنید. به طور خاص، شما می توانید در صورت بروز خطا، یک متد جاوااسکریپت برای نمایش پیغام خطا یا هدایت به صفحه خطا اضافه کنید.
در اینجا یک راهنمای ساده برای انجام این کار آورده شده است:
کدهای Controller:
[HttpGet]
public IActionResult myPartial(int ID)
{
if (ID == 0)
{
return Json(new { success = false, redirectUrl = Url.Action("Error", "Home") });
}
ViewBag.ID = ID;
return PartialView("_Follow");
}
کدهای cshtml:
<a asp-controller="ControllrtName" asp-action="myPartial" asp-route-ID="@item.ID" class="ajax-link">
نمایش
</a>
<div id="modal-container"></div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).on('click', '.ajax-link', function (e) {
e.preventDefault();
var url = $(this).attr('href');
$.get(url)
.done(function (data) {
if (data.success) {
$('#modal-container').html(data);
} else {
window.location.href = data.redirectUrl;
}
})
.fail(function () {
alert('خطا در بارگذاری اطلاعات.');
});
});
</script>
در این کد، زمانی که لینک پارشیال ویو کلیک می شود، یک درخواست AJAX به سمت متد myPartial ارسال می شود. اگر ID برابر با 0 باشد، یک پاسخ JSON برمی گرداند که شامل نشانه success برای شکست و URL برای هدایت به صفحه خطا است. در غیر این صورت، پاسخ داده شده را در modal بارگذاری می کند.
سلام و درود
ببینید شما وقتی یک Partial View رو return می کنید در واقع نوع درخواست شما از نوع یک Partial View هست و دیگه نمیتونید یک View برگردونید. بنظرم بهتره برای هدایت کاربر در صورت بروز خطا حین اجرای یک Partial View مثل خودش یک پارشیال ویو رو برگردونید.
یعنی کدهای شما به این صورت میشه :
[HttpGet]
public IActionResult myPartial(int ID)
{
if (ID == 0)
{
Return Redirect("~/Home/PartialError");
}
ViewBag.ID = ID;
return PartialView("_Follow");
}
دقت کنید که در کدهای بالا به جای استفاده از متد RedirectToAction از Redirect استفاده شده چون شما گفتید صفحه خطا در یک Area جداگانه هست. حالا می تونید توی کنترلر Home یک اکشن متد ایجاد کنید به نام PartialError و پارشیال ویو برای نمایش خطا رو صدا بزنید
[HttpGet]
public IActionResult PartialError()
{
return PartialView("_PartialError");
}
خب همونطوری که میبینید یک پارشیال ویو به نام _PartialError رو نمایش میدیم. در مجموع برای کنترل خطا حین اجرای پارشیال شاید بهتر باشه یک پارشیال ویو برگشت داده بشه.
البته خب راههای دیگه ای هم هست که می تونید این لینک رو مطالعه کنید.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2