نحوه دسترسی به خطای های Model State در MVC
نحوه دسترسی به خطای های Model State در MVC
بسیاری از برنامه نویسان تازه کار که با خطاهای برنامه نویسی مواجع می شوند مخصوصا در mvc نمی دانند که باید چه کاری آنجا دهند تا علت خطاها را پیدا کنند. در این مقاله به دریافت خطاها از Model State و try cash می پردازیم.
برای این کار کافیست متد زیر را در یک کلاسی تعریف کنید.
public static string GetErrors(this ModelStateDictionary modelState) { return string.Join("<br />", (from item in modelState where item.Value.Errors.Any() select item.Value.Errors[0].ErrorMessage).ToList()); }
متد بالا یک ModelStateDictionary به عنوان ورودی دریافت می کند برای این کار زمانی که ModelState.IsValid برابر False شد در قسمت else آن به صورت زیر خطاها را به متد GetErrors ارسال کنید و این متدخطاهای که اتفاق افتاده از هم توسط تگ br جدا شده را بر می گرداند و حال می توانید آن را نمایش دهید یا بررسی کنید وعلت خطا را پیدا کنید.
if (ModelState.IsValid) { } else { ModelState.GetErrors(); }
برای اینکه بتوانید خطاهای اتفاق افتاده در عمل ثبت، حذف، ویرایش و... در Entity Framework را پیدا کنید کافیست در قسمت cash کدهای زیر را بنویسید.
try { // کدهای اینتیتی فریم ورک } //در صورت بروز خطا آن را نمایش هدهد catch (DbEntityValidationException ex) { // Retrieve the error messages as a list of strings. var errorMessages = ex.EntityValidationErrors .SelectMany(x => x.ValidationErrors) .Select(x => x.ErrorMessage); // Join the list to a single string. var fullErrorMessage = string.Join("; ", errorMessages); // Combine the original exception message with the new one. var exceptionMessage = string.Concat(ex.Message, " The validation errors are: ", fullErrorMessage); // Throw a new DbEntityValidationException with the improved exception message. //throw new DbEntityValidationException(exceptionMessage, ex.EntityValidationErrors); }
نظر / سوال