دسته بندی ها
14:30 1400/06/05

هدایت کاربر به مسیر خاص بعد از نمایش پیغام گرافیکی توسط sweet alert

مشخصات سوال کننده :
کاربر : frisat     امتیاز کاربر : ‎−2     رتبه کاربر : 7121
دسته بندی : Asp.net Core جاوا اسکریپت جی کوئری SweetAlert

به این سوال امتیاز بدهید    ‎−3
تعداد بازدید این سوال : 3311
هوش مصنوعی

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

برای اینکه کاربر بعد از ارسال موفقیت آمیز فرم به صفحه دیگری هدایت شود، می توانید در کنترلر از یک JSON استفاده کنید و در سمت کلاینت با استفاده از Sweet Alert پیغام را نمایش دهید و سپس کاربر را به صفحه مورد نظر هدایت کنید.

همچنین در کدهای کنترلی باید کد هدایت به صفحه را حذف کنید و به جای آن یک پاسخ JSON ارسال کنید. در ادامه کدهای شما را اصلاح کرده ام:

کدهای بخش کنترلر :

[HttpPost]
public IActionResult submitPersons(Person person, String newPersonCartMlieImagePath, String newPersonShnasnameeImagePathName, String newPersonImagePathName, String newPersonBieemeDacumenPath)
{
    if (ModelState.IsValid)
    {
        var proMapped = _mapper.Map<Person>(person);

        proMapped.PersonImage = newPersonImagePathName;
        proMapped.PersonShnasnamee = newPersonShnasnameeImagePathName;
        proMapped.PersonCartMlie = newPersonCartMlieImagePath;
        proMapped.PersonBieemeDacument = newPersonBieemeDacumenPath;
        proMapped.PersonState = true;

        _context.Add(proMapped);
        _context.SaveChanges();

        return Json(new { success = true });
    }

    return Json(new { success = false, message = "مشکلی در ثبت اطلاعات وجود دارد." });
}

کدهای بخش View :

///کدهای ویو

<button class="btn btn-info w-25 mt-2 mb-4" id="btn-submit-btn" type="button">ثبت پرسنل</button>

<script>

    $('#btn-submit-btn').click(function () {
        // ارسال اطلاعات فرم به سرور
        $.ajax({
            url: '@Url.Action("submitPersons", "Home")',
            type: 'POST',
            data: $('form').serialize(), // داده های فرم را ارسال می کند
            success: function (response) {
                if (response.success) {
                    swal({
                        title: "ارسال نامه",
                        text: "نامه شما با موفقیت ارسال شد",
                        type: 'success',
                        showCancelButton: false,
                        allowOutsideClick: false,
                        confirmButtonColor: "green",
                        confirmButtonText: "باشه"
                    }).then(function () {
                        window.location.href = "/Home/allPerson";
                    });
                } else {
                    swal({
                        title: "خطا",
                        text: response.message,
                        type: 'error',
                        confirmButtonColor: "red",
                        confirmButtonText: "باشه"
                    });
                }
            }
        });
    });

</script>

در اینجا، با کلیک بر روی دکمه «ثبت پرسنل» یک درخواست AJAX ارسال می شود. در صورتی که جواب موفقیت آمیز باشد، Sweet Alert با پیغام موفقیت به نمایش درمی آید و کاربر به صفحه مورد نظر هدایت می شود. در غیر این صورت پیغام خطا نمایش داده می شود.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : DiakoAspCore 03:37 1400/06/06

با سلام 

شما یه Button گذاشتی که اصلاً هیچ ارتباطی بین اون و کنترلر نداره . و فقط قراره یه Message رو نشون بده .

ویرایش شده در شنبه 6 شهریور 1400 ساعت 14:04:33
به این پاسخ امتیاز بدهید    0
امتیاز: 37 رتبه: 20
1 نظر
frisat : خب لطفا راهنمایی کنید چکار کنم.

امتیاز کاربر : ‎−2   رتبه کاربر : 7121   تاریخ ثبت : 12:42 1400/06/06
پاسخ دهنده : fateme 14:17 1400/06/06

احساس می کنم شما مشکل اصلیتون توی جی کوئری و استفاده از ایجکس هست. چون شما توی متن سوال گفتید میخواید اگر مدل شما معتبر بود یک پیغام نمایش داده بشه. خب نکته اول اینکه اگر شما میخواید مدلتون سمت سرور اعتبارسنجی بشه باید توسط دستورات Ajax مدل رو به کنترلر ارسال کنید و در اونجا توسط دستور زیر اعتبارسنجی رو انجام بدید. در کدهایی که قرار دادید هیچ نشانه ای از استفاده از ایجکس دیده نمیشه !!!

if (ModelState.IsValid) {
   //...
}

ارسال اطلاعات به سمت کنترلر توسط دستورات ایجکس

 

اگر هم قصد دارید مدل خودتون رو سمت کلاینت اعتبارسنجی کنید (که البته زیاد پیشنهاد نمیشه) خب دیگه در این صورت اصلا نیازی به دستورات موجود در کنترلر که نوشتید نیست. چون شما مدلتون رو در سمت کلاینت اعتبار سنجی میکنید و اگر صحیح بود یک پیغام گرافیکی نمایش می دید و کاربر رو به سمت مسیر خاصی که نیاز داشتید هدایت می کنید.

<script>   
    $('#btn-submit-btn').click(function () {
      if (("#txt1").val() == '' )
      {
          alert('مدل شما معتبر نیست');
          return false;
      }
        swal({
            title: "ارسال نامه",
            text: "نامه شما با موفقیت ارسال شد",
            type: 'success',
            showCancelButton: false,
            allowOutsideClick: false,
            confirmButtonColor: "green",
            confirmButtonText: "باشه"
        }).then(function () {
            window.location.href = "/Home/allPerson";
        });

    });

</script>

در مثال بالا فرض شده که txt1 یک input می باشد که در مدل داده ای شما موجود هست (چون شما هیچ اشاره ای به مدل داده ای خودتون نکردید). بنابراین کنترل کردیم که مقدارش خالی نباشه و اگر خالی بود یک پیغام نمایش دادیم.

 

نکته : ببینید اگر شما میخواید اطلاعات رو توسط ایجکس به سمت سرور ارسال کنید و در سمت سرور اعتبارسنجی کنید یا حتی اطلاعاتی در دیتابیس ثبت یا ویرایش کنید دقت کنید که return شما باید به صورت زیر باشد :

return json (new { status = "ok"});

 

ویرایش شده در شنبه 6 شهریور 1400 ساعت 14:18:33
به این پاسخ امتیاز بدهید    0
امتیاز: 1635 رتبه: 2
3 نظر
frisat : تصمیم گرفتم سمت کلاینت اعتبارسنجی کنم ولی alert که نوشتید نمایش داده نمیشه.ایدی ها رو هم ست کردم و مقدار input خالی هست ولی هیچ اخطاری نمیدهد؟

امتیاز کاربر : ‎−2   رتبه کاربر : 7121   تاریخ ثبت : 06:03 1400/06/06
saedbfd : اگر قصد دارید سمت کلاینت اعتبارسنجی کنید پس کدهایی که برای اکشن متد (سمت سرور) گذاشتید برای چی هست ؟ وقتی سمت کلاینت اعتبارسنجی می کنید در واقع هیچ اطلاعاتی به سمت سرور نباید ارسال بشه دیگه.

امتیاز کاربر : 1664   رتبه کاربر : 1   تاریخ ثبت : 06:33 1400/06/06
hamdola : برای اعتبارسنجی سمت کلاینت نیازی به کدهای کنترلر نیست چون اصلا برنامه اونجا نمیره. فرمودید درست عمل نمیکنه کدهاتون. خب خطایی دارید؟ مشکل چی هست دقیقا ؟

امتیاز کاربر : 121   رتبه کاربر : 12   تاریخ ثبت : 10:02 1400/06/06
ادامه نظرات ...
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود