مشکل null بودن IFormFile در UserController و ProductController

سوال شده توسط: Amirmhdi Gol

تاریخ ثبت: ۱۴۰۱/۰۴/۱۷

بازدید: 411

پاسخ: 9

تگ: Asp.net Core


سلام استاد اشرافی خسته نباشید ,

موقع ادیت کردن product و user من نمیتونم اینپوت IFormFile رو خالی بزارم همیشه میگه باید پرش کنی همه چی رو هم nullable کردم نمیدونم مشکل از کجاست

پاسخ ها
user

Amirmhdi Gol

الان یه بررسی کردم دیدم که مشکل از فایل validation  که گزاشته بودیم بوده از کلاس FileImage

user

محمد اشرافی

سلام ، توی سورس من مشکلی نداره ، شاید فایل رو قبلا تغییر داده باشم شما تغییراتش رو نداشته باشید ، اون فایل رو از Github بگیرید و جایگزین مال خودتون کنید باید اوکی باشه و اینکه باید ?IFormFile  تعریف کنید و Required هم نداشته باشه

user

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 رو گزاشتید درسته ؟ 

user

محمد اشرافی

مهندس این Attribute ها برای Front کاربرد دارن ، ربطی به Api نداره

user

محمد اشرافی

اون بالا باید به این شکل باشه

 

public override bool IsValid(object? value)
{
            var fileInput = value as Microsoft.AspNetCore.Http.IFormFile;
            if (fileInput == null)
                return true;

            return fileInput.IsImage();
}
user

Amirmhdi Gol

منم داخل فرانت ارور میگیرم اصن کاری به api ندارم اون درست کار میکنه , عکسی که شما گزاشتید برای متد IsValid هست من داخل AddValidation رو فرستادم اون رو هم دارم 

دریافت فایل ضمیمه
user

محمد اشرافی

شما گفتین توی Controller نه گفتین فرانت

الان شما خطای سمت Client رو قبل از اینکه Submit بشه سمت سرور دریافت میکنید ، یا Controller میگه ModelState ولید نیست ؟

user

محمد اشرافی

اگه 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;
    });
user

Amirmhdi Gol

بله این کد رو چک نکرده بودم قبلا دستکاریش کرده بودم الان درستش کردم خیلی ممنون

برای ثبت پاسخ باید خود شوید

محبوب ترین مقالات