رفع خطای Object reference not set to an instance of an object در تگ Select
سلام پروژه م را با asp.net core 5 نوشتم متدی را که برای create نوشتن الان کار می کنه و حتی فیلدی رو که توش خطا میگیره مقدار درست توی دیتابیس می ریزه ولی بعد پایان متد این خطا رو هم دارم
کد سمت html
<div class="row">
<div class="col-5">
<label >نوع شرکت*</label>
<select class="list-dt" id="companyTypeId" name="companyTypeId" required>
<option disabled selected>انتخاب کنید</option>
@foreach (CompanyType company in ViewBag.companyType)
{
<option value="@company.CompanyTypeId">@company.CompanyType1</option>
}
</select>
<span asp-validation-for="companyTypeId" class="text-danger"></span>
</div>
متد get :
// GET: People/CreateLegalPersonIdentityInfo
public IActionResult CreateLegalPersonIdentityInfo()
{
ViewBag.province = _context.Provinces.ToList();
ViewBag.cities = _context.Cities
.ToList()
.OrderBy(e => e.CityId);
ViewBag.companyType = _context.CompanyTypes.ToList();
ViewBag.nationalCode = HttpContext.Session.GetString("n");
return View();
}
متد post ( به صورت خلاصه)
// POST: People/CreateLegalPersonIdentityInfo
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult CreateLegalPersonIdentityInfo(string fullName, string economicCode, int companyTypeId)
{
byte[] pt;
byte[] pg;
if (HttpContext.Session.TryGetValue("pt", out pt) || HttpContext.Session.TryGetValue("pg", out pg))
{
legal.CompanyTypeId = Convert.ToByte(companyTypeId);
}
}
خطا :
پاسخ هوش مصنوعی
خطای "Object reference not set to an instance of an object" معمولاً به این معنی است که شما در حال تلاش برای دسترسی به یک شیء یا متغیری هستید که مقداردهی اولیه نشده است. این خطا در مورد تگ `
- شما مطمین نیستید که آیا `ViewBag.companyType` مقداردهی شده است یا خیر. اگر در زمان اجرا `ViewBag.companyType` `null` باشد، شما نمی توانید بر روی آن `foreach` بزنید.
- هنگام استفاده از اطلاعات `ViewBag` در View، مطمین شوید که متد GET به درستی فراخوانی شده و مقادیر مورد نظر به `ViewBag` اضافه شده اند.
برای رفع این مشکل، می توانید قبل از حلقه `foreach` یک بررسی برای اطمینان از این که `ViewBag.companyType` `null` نیست، اضافه کنید:
<select class="list-dt" id="companyTypeId" name="companyTypeId" required>
<option disabled selected>انتخاب کنید</option>
@if (ViewBag.companyType != null)
{
foreach (CompanyType company in ViewBag.companyType)
{
<option value="@company.CompanyTypeId">@company.CompanyType1</option>
}
}
</select>
همچنین پیشنهاد می شود که خطاهای سمتی را در متد POST نیز بررسی کنید. اطمینان حاصل کنید که داده ها به درستی به Controller ارسال می شوند و تمام مقادیر مورد نیاز به درستی بارگزاری شده اند.
این اقدامات باید به شما کمک کند تا این خطا را برطرف کنید.
برای نمایش اطلاعات دیتابیس در تگ Select در Core بهتره که به روشی که در لینک زیر هست عمل کنید.
نمایش اطلاعات دیتابیس در تگ Select در Asp.net Core
شما برای این کار از دو ViewBag استفاده کردید که احتمال null شدن اونها در صورتی که یک Request اجرا بشه هست. و این خطا ممکنه پیش بیاد.
- آموزش استفاده از پلاگین گردونه شانس در 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