مشکل null بودن IFormFile در UserController و ProductController
سلام استاد اشرافی خسته نباشید ,
موقع ادیت کردن product و user من نمیتونم اینپوت IFormFile رو خالی بزارم همیشه میگه باید پرش کنی همه چی رو هم nullable کردم نمیدونم مشکل از کجاست
پاسخ ها
Amirmhdi Gol
الان یه بررسی کردم دیدم که مشکل از فایل validation که گزاشته بودیم بوده از کلاس FileImage
محمد اشرافی
سلام ، توی سورس من مشکلی نداره ، شاید فایل رو قبلا تغییر داده باشم شما تغییراتش رو نداشته باشید ، اون فایل رو از Github بگیرید و جایگزین مال خودتون کنید باید اوکی باشه و اینکه باید ?IFormFile تعریف کنید و Required هم نداشته باشه
Amirmhdi Gol
استاد دقیقا کد خودتون رو هم گزاشتم ارور میداد موقع ادیت کردن هم این ارور رو میده موقع Post شدن فرم قبل ازینکه وارد OnPost بشه حتی
تمام جاهای ممکن رو nullable کردم باز ارور داد از داخل FileImage که برک پوینت گذاشتم این خطش ارور میداد
if (!context.Attributes.ContainsKey("data-val"))
context.Attributes.Add("data-val", "true");
context.Attributes.Add("accept", "image/*");
context.Attributes.Add("data-val-fileImage", ErrorMessage); <=== این خط
اوجایی که errormessage رو گزاشتید درسته ؟
محمد اشرافی
مهندس این Attribute ها برای Front کاربرد دارن ، ربطی به Api نداره
محمد اشرافی
اون بالا باید به این شکل باشه
public override bool IsValid(object? value)
{
var fileInput = value as Microsoft.AspNetCore.Http.IFormFile;
if (fileInput == null)
return true;
return fileInput.IsImage();
}
Amirmhdi Gol
منم داخل فرانت ارور میگیرم اصن کاری به api ندارم اون درست کار میکنه , عکسی که شما گزاشتید برای متد IsValid هست من داخل AddValidation رو فرستادم اون رو هم دارم
محمد اشرافی
شما گفتین توی Controller نه گفتین فرانت
الان شما خطای سمت Client رو قبل از اینکه Submit بشه سمت سرور دریافت میکنید ، یا Controller میگه ModelState ولید نیست ؟
محمد اشرافی
اگه JQuery بهتون خطا میده این کد رو توی ClientValidation.js تغییر بدین :
jQuery.validator.addMethod("fileImage",
function (value, element, params) {
var fileType = getExtension(value.toLowerCase());
if (!fileType)
return true;
if (fileType === "png" || fileType === "jpg" || fileType === "jpeg" ||
fileType === "bmp" || fileType === "svg" || fileType === "gif" ||
fileType === "tiff" || fileType === "webp" || fileType === "ico" || fileType === "pjpeg")
return true;
else
return false;
});
Amirmhdi Gol
بله این کد رو چک نکرده بودم قبلا دستکاریش کرده بودم الان درستش کردم خیلی ممنون