دسته بندی ها
22:21 1401/07/14

ذخیره ی تکراری اطلاعات در دیتابیس در SignalR در Asp.net Core

مشخصات سوال کننده :
کاربر : Rouhbakhsh     امتیاز کاربر : 1     رتبه کاربر : 152
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3353
6 نظر
fateme : آیا فقط خط context.sentLettersUW.Create(SL) دوبار اجرا می شود یا کل بدنه Action شما ؟

امتیاز کاربر : 1635   رتبه کاربر : 2   تاریخ ثبت : 12:41 1401/07/15
hamid_b : در این موارد بهترین راهکار این هست که یک پروژه خالی ایجاد کنید و کدهاتون رو در اون پروژه خالی قرار بدید و تست کنید. چون در پروژه ها معمولا حجم زیادی کد و فایلهای css و js هست که ممکنه خطا از هر جایی باشه. بنظرم یک پروژه خالی ایجاد کنید و کدهاتون رو به طور خلاصه در اونجا تست کنید و اگر موفق نشدید مشکل رو حل کنید سورس پروژه رو قرار بدید. (البته سورس پروژه کوچک و خلاصه شده نه کل پروژه)

امتیاز کاربر : 518   رتبه کاربر : 4   تاریخ ثبت : 12:52 1401/07/15
Rouhbakhsh : هر خط را دوبار اجرا می کند یعنی وقتی با f10 حرکت می کنم هر کدام را دوبار می خواند

امتیاز کاربر : 1   رتبه کاربر : 152   تاریخ ثبت : 12:53 1401/07/15
saedbfd : یکبار پروژه رو در حالت release قرار بدید و پروژه رو ران کنید. ببینید در این حالت هم این مشکل وجود داره یا نه

امتیاز کاربر : 1664   رتبه کاربر : 1   تاریخ ثبت : 03:13 1401/07/15
Rouhbakhsh : بله در حالت release هم ران کردم و همین مشکل هست

امتیاز کاربر : 1   رتبه کاربر : 152   تاریخ ثبت : 05:24 1401/07/15
Rouhbakhsh : الان با زدن کلید ارسال با زدن f12 متوجه شدم که خطای زیر رو Uncaught (in promise) TypeError: err.tostring is not a function برای خط return console.error(err.tostring()); نمایش میده راه حلی هست؟؟

امتیاز کاربر : 1   رتبه کاربر : 152   تاریخ ثبت : 10:11 1401/07/15
ادامه نظرات ...
هوش مصنوعی

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

برای حل مشکل ذخیره ی تکراری اطلاعات در دیتابیس، لطفاً مطمین شوید که متد `SentLetter` در کنترلر شما فقط یک بار فراخوانی می شود. اگر این متد دوبار فراخوانی شده، ممکن است مشکل در سمت کلاینت باشد. شما می توانید با بررسی و اشکال زدایی کدهای مربوط به `click` event، مطمین شوید که چندین بار ثبت نام نشده باشد.

شما می توانید به جای متد `addEventListener` از رویداد `one` استفاده کنید تا اطمینان حاصل کنید که فقط یک بار به دکمه کلیک شده پاسخ می دهد.

document.getElementById("btnsentLetter").one("click", function () {
    $.ajax({
        type: "Post",
        url: '/UserArea/Draft/SentLetter',
        data: {
            'LetterID': $("#letterid").html().trim(),
            ...
        }
    }).done(function (result) {
        if (result.status == 'ok') {
            var userIdList = $("#SelectedUserToSent").val();
            connection.invoke("SentLetters", userIdList).catch(function (err) {
                return console.error(err.toString()); // اصلاح شده
            });
            swal({
                ...
            });
        }
    });
});

به یاد داشته باشید که مشکل `err.toString()` که در جاوااسکریپت مشاهده می کنید، به خاطر اشتباه در نام تابع است. باید از `toString()` به جای `tostring()` استفاده کنید:

return console.error(err.toString());

لطفاً پس از ایجاد این تغییرات، کد خود را دوباره بررسی کنید و ببینید آیا مشکل تکرار ذخیره سازی حل شده یا خیر. همچنین اگر از jQuery استفاده نمی کنید، می توانید به جای آن برای افزودن رویداد `click` از متدهای استاندارد JavaScript استفاده کنید.

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