سلام دوستان

نمیدونم مشکل را باید در همین تالار مطرح میکردم یا نه.

در بانک اطلاعاتی جداول زیادی دارم که اکثرا ستون هایی با نام Valid, Finalized, Approved و موارد این چنین دارند. برای اینکه دستورات تکراری برای مقدار دهی این ستون ها ننویسم اومدم متدها و توابع عمومی نوشتم که در ادامه توضیح میدم. اما با اجرای دستورات با خطا مواجه میشم که قبلا این خطا وجود نداشته و جدیدا ظاهر شده.

در هر صفحه ای از برنامه اگر بخوام مقدار Apprved برابر 1 بشه یک تابع در همان View نوشتم که با توجه به مقدار برگشتی، اقدام لازم را انجام میده:

function tblDailyReportApproved(id) {
try {
let status = $("#colApproved" + id).attr("data-approved").toLowerCase();
SetApproved("@(typeof(cesEntities.Models.cesProjec t.tblDailyReport).FullName)", id, status).then(function (result) {
if (result == true) {
if (status.toLowerCase() == "true") {
$("#colApproved" + id).attr("data-approved", "false");
$("#colApproved" + id).append('<i class="bi bi-check"></i>');
} else {
$("#colApproved" + id).attr("data-approved", "true");
$("#colApproved" + id).html(null);
}
} else {
swalError.fire({text:result.message});
}
});
} catch (e) {
swalError.fire({ text: e.message });
}
}

این تابع مقدار موجود در سلول جدول را میخواند و سپس یک تابع دیگر را که عمومی هست با نام SetApproved را صدا میزند و با توجه به نتیجه برگشت داده شده، مقدار سلول جدول را مقدار دهی خواهد کرد.

متد عمومی SetApproved از تمام بخش های برنامه در دسترس می باشد چون در بخش Script از layout برنامه نوشته شده:

function SetApproved(entityFullName, id, status) {
return new Promise(function (resolve, reject) {
$.ajax({
type: "GET",
url: "/Common/SetApproved",
data: {
"entityFullName": entityFullName,
"id": id,
"status": status
},
headers: { "XSRF-TOKEN": $('input:hidden[name="__RequestVerificationToken"]').val() },
success: function (result) {
resolve(result);
},
error: function (err) {
reject(err); // Reject the promise and go to catch()
}
});
});
}


تابع فوق متد SetApproved موجود در کنترلر Common را اجرا خواهد کرد که متد بصورت زیر نوشته شده است:

public IActionResult SetApproved(string entityFullName, int id, bool status)
{
Type entityType = GetEntity(entityFullName);
if (entityType == null) return new JsonResult(new { status = false, message = "Invalid data" });

try
{
bool result = db.CommonRepository.SetApproved(entityType, id, status);

if (!result)
return new JsonResult(new { status = false, message = "Operaion not done" });

if (db.SaveChangesByUserId(HttpContext.Session.GetAct iveUser_UserId()) == 0)
return new JsonResult(new { status = false, message = "Operaion not saved" });

return new JsonResult(result);
}
catch (Exception ex)
{
return new JsonResult(new { status = false, message = ex.Message });
}
}

این متد نوع entity را با توجه به مقدار entityFullName از اسمبلی Entity دریافت می کند و ادامه کد...

اما بعد از کلید روی دکمه موجود در صفحه پیغام زیر نمایش داده میشه:

promise.png

نمیتونم خطا را بررسی کنم و نمیدونم اصلا از دستورات JS هستش یا C#‎‎‎‎‎. دستور را بصورت POST اجرا میکنم خطای 500 میده و بصورت GET خطای تصویر بالا نمایش داده میشه. ممنون اگر راهنمایی کنید.