دسته بندی ها
22:01 1399/05/17

نمایش صفحه Error هنگام خطا در PartialView

مشخصات سوال کننده :
کاربر : hamdola     امتیاز کاربر : 121     رتبه کاربر : 12
دسته بندی : Asp.net Mvc Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 2279
1 نظر
mohammad-i : دقیقا به چه اروری بر میخورید؟ من فکر میکنم با Not found مواجه میشید. توی کنترلر home در همون area یک ویو Error بسازید و امتحان کنید.

امتیاز کاربر : 260   رتبه کاربر : 7   تاریخ ثبت : 11:20 1399/05/18
هوش مصنوعی

پاسخ هوش مصنوعی

برای نمایش صفحه خطا هنگام بروز خطا در 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 بارگذاری می کند.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 13:15 1399/05/18

سلام و درود

ببینید شما وقتی یک 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 رو نمایش میدیم. در مجموع برای کنترل خطا حین اجرای پارشیال شاید بهتر باشه یک پارشیال ویو برگشت داده بشه.

البته خب راههای دیگه ای هم هست که می تونید این لینک رو مطالعه کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: 1664 رتبه: 1
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود