ثبت اطلاعات خالی در Sql Server از طریق انتیتی فریم ورک
سلام و احترام...
هنگام ثبت اطلاعات جدید، در صورتی که برای اولین بار بر روی دکمه (ثبت اطلاعات) در برنامه کلیک می کنم، یه رکورد جدید به صورت خالی برای من داخل SQL ذخیره میشه! چطور می تونم این مشکل رو حل کنم؟
کد AJAX
$("#btnAddCountry").on('click', function(e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: '@ApiAddress' + 'CountriesApi/CreateCountryApi',
data: { countryname: $("#CountryName").val() },
success: function (xml, textStatus, xhr) {
// موجود هستند API پارامترهای استانداردی که از
if (xhr.status == '200') {
// نمایش فرم انیمیشن در زمان ثبت اطلاعات
const loadingEl = document.createElement("div");
document.body.prepend(loadingEl);
loadingEl.classList.add("page-loader");
loadingEl.classList.add("flex-column");
loadingEl.classList.add("bg-dark");
loadingEl.classList.add("bg-opacity-25");
loadingEl.innerHTML = `
<span class="spinner-border text-primary" role="status"></span>
<span class="text-gray-100 fs-5 mt-5">سیستم در حال بررسی اطلاعات ...</span>`;
KTApp.showPageLoading();
setTimeout(function () {
KTApp.hidePageLoading();
loadingEl.remove();
window.location.reload();
}, 3550);
setTimeout(function () {
toastr.options = {
"debug": false,
"closeButton": false,
"newestOnTop": false,
"progressBar": true,
"positionClass": "toastr-top-center",
"preventDuplicates": false,
"showDuration": "600",
"hideDuration": "1000",
"timeOut": "1800",
"extendedTimeOut": "1000",
"showEasing": "swing",
"hideEasing": "linear",
"showMethod": "fadeIn",
"hideMethod": "fadeOut"
};
toastr.success("ثبت اطلاعات با موفقیت انجام شد.");
}, 1300);
}
if (jqXHR.status == '550') {
const loadingEl = document.createElement("div");
document.body.prepend(loadingEl);
loadingEl.classList.add("page-loader");
loadingEl.classList.add("flex-column");
loadingEl.classList.add("bg-dark");
loadingEl.classList.add("bg-opacity-25");
loadingEl.innerHTML = `
<span class="spinner-border text-primary" role="status"></span>
<span class="text-gray-100 fs-5 mt-5">سیستم در حال بررسی اطلاعات ...</span>`;
KTApp.showPageLoading();
setTimeout(function () {
KTApp.hidePageLoading();
loadingEl.remove();
window.location.reload();
}, 3550);
setTimeout(function () {
toastr.options = {
"debug": false,
"newestOnTop": false,
"progressBar": true,
"positionClass": "toastr-top-center",
"preventDuplicates": false,
"showDuration": "6000",
"hideDuration": "1000",
"timeOut": "1700",
"extendedTimeOut": "1000",
"showEasing": "swing",
"hideEasing": "linear",
"showMethod": "fadeIn",
"hideMethod": "fadeOut"
};
toastr.warning("کاربرگرامی: این کشور قبلاٌ ثبت شده است.", "هشدار");
}, 1300);
return false;
}
else if (jqXHR.status == '500') {
const loadingEl = document.createElement("div");
document.body.prepend(loadingEl);
loadingEl.classList.add("page-loader");
loadingEl.classList.add("flex-column");
loadingEl.classList.add("bg-dark");
loadingEl.classList.add("bg-opacity-25");
loadingEl.innerHTML = `
<span class="spinner-border text-primary" role="status"></span>
<span class="text-gray-100 fs-5 mt-5">سیستم در حال بررسی اطلاعات ...</span>`;
KTApp.showPageLoading();
setTimeout(function () {
KTApp.hidePageLoading();
loadingEl.remove();
window.location.reload();
}, 3550);
setTimeout(function () {
toastr.options = {
"debug": false,
"newestOnTop": false,
"progressBar": true,
"positionClass": "toastr-top-center",
"preventDuplicates": false,
"showDuration": "6000",
"hideDuration": "1000",
"timeOut": "1700",
"extendedTimeOut": "1000",
"showEasing": "swing",
"hideEasing": "linear",
"showMethod": "fadeIn",
"hideMethod": "fadeOut"
};
toastr.error("در ثبت اطلاعات مشکلی بوجود آمده است. لطفاً دقایقی دیگر تلاش نمایید.", "خطا");
}, 1300);
return false;
}
else if (jqXHR.status == '400' || xhr.status == 0) {
const loadingEl = document.createElement("div");
document.body.prepend(loadingEl);
loadingEl.classList.add("page-loader");
loadingEl.classList.add("flex-column");
loadingEl.classList.add("bg-dark");
loadingEl.classList.add("bg-opacity-25");
loadingEl.innerHTML = `
<span class="spinner-border text-primary" role="status"></span>
<span class="text-gray-100 fs-5 mt-5">سیستم در حال بررسی اطلاعات ...</span>`;
KTApp.showPageLoading();
setTimeout(function () {
KTApp.hidePageLoading();
loadingEl.remove();
window.location.reload();
}, 3550);
setTimeout(function () {
toastr.options = {
"debug": false,
"newestOnTop": false,
"progressBar": true,
"positionClass": "toastr-top-center",
"preventDuplicates": false,
"showDuration": "6000",
"hideDuration": "1000",
"timeOut": "1700",
"extendedTimeOut": "1000",
"showEasing": "swing",
"hideEasing": "linear",
"showMethod": "fadeIn",
"hideMethod": "fadeOut"
};
toastr.info("کاربرگرامی: وارد کردن نام کشور الزامی است.", "خطا");
}, 1300);
return false;
}
},
//error: function(jqXHR, textStatus, exception) {
//}
})
});
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
کد مربوط به نال نبودن اطلاعات در سمت WebAPI
[HttpPost("CreateCountryApi")]
public IActionResult Create([FromForm] string countryname = "")
{
// شرط مربوط به خالی بودن و خطای داده مربوط به کشور
if (countryname == null) return BadRequest(ModelState);
// متد مربوط به تکراری نبودن اطلاعات در پایگاه داده
var getCity = _context.countryUW.Get(c => c.CountryName == countryname);
if (getCity.Count() > 0)
{
// خطای مربوط به ثبت داده تکرای در پایگاه داده
return StatusCode(550);
}
try
{
Country C = new Country
{
CountryName = countryname,
};
_context.countryUW.Create(C);
_context.Save();
return Ok(C);
}
catch (Exception)
{
// خطای مربوط به ثبت نشدن اطلاعات شهر در پایگاه داده
return StatusCode(500);
}
}
پاسخ هوش مصنوعی
برای حل مشکل ثبت رکورد خالی در SQL Server از طریق Entity Framework، می توانید اطمینان حاصل کنید که قبل از ذخیره سازی اطلاعات در پایگاه داده، کنترل های لازم برای بررسی صحت و معتبر بودن داده ها اجرا شده باشد. به خصوص بررسی کنید که متغیر `countryname` خالی یا نال نباشد. در کد WebAPI خود، بررسی کنید که اگر `countryname` خالی بود، بتوانید به درستی خطا را مدیریت کنید. به جای `if (countryname == null)`، بهتر است از `if (string.IsNullOrWhiteSpace(countryname))` استفاده کنید. این کار نیز فضاهای خالی را شناسایی می کند. بدین صورت:
[HttpPost("CreateCountryApi")]
public IActionResult Create([FromForm] string countryname = "")
{
// شرط مربوط به خالی بودن و خطای داده مربوط به کشور
if (string.IsNullOrWhiteSpace(countryname)) return BadRequest(ModelState);
// متد مربوط به تکراری نبودن اطلاعات در پایگاه داده
var getCity = _context.countryUW.Get(c => c.CountryName == countryname);
if (getCity.Count() > 0)
{
// خطای مربوط به ثبت داده تکراری در پایگاه داده
return StatusCode(550);
}
try
{
Country C = new Country
{
CountryName = countryname,
};
_context.countryUW.Create(C);
_context.Save();
return Ok(C);
}
catch (Exception)
{
// خطای مربوط به ثبت نشدن اطلاعات شهر در پایگاه داده
return StatusCode(500);
}
}
با اعمال این تغییر، اگر کاربر تنها بر روی دکمه ثبت کلیک کند و هیچ نام کشوری وارد نکند، دیگر یک رکورد خالی در پایگاه داده ثبت نخواهد شد.
دوست عزیز بهتره فقط کدهایی رو قرار بدید که فکر میکنید مشکل دارن. نیازی نیست همه کدهای خودتون رو کپی کنید چون خیلی شلوغ میشه و افراد کمتری تمایل پیدا می کنن پاسخ بدن.
- روی اکشن Create یک BreakPoint بذارید و مطمین بشید که countryname مقدار داره.
- خط به خط با دکمه f10 جلو برید و مطمین بشید که در نهایت دستور context.save اجرا میشه.
- مقدار countryname رو در کد زیر هم حتما تست کنید:
Country C = new Country
{
CountryName = countryname,
};
ضمنا مطمین باشید که دیتابیس شما با collation فارسی یا arabic ساخته شده باشه.
- آموزش استفاده از پلاگین گردونه شانس در 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