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

Amirmhdi Gol
17 تير ۱۴۰۱

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

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

607

9 پاسخ
  • Amirmhdi Gol17 تير ۱۴۰۱

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

  • محمد اشرافی21 تير ۱۴۰۱

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

  • Amirmhdi Gol21 تير ۱۴۰۱

    استاد دقیقا کد خودتون رو هم گزاشتم ارور میداد موقع ادیت کردن هم این ارور رو میده موقع 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 رو گزاشتید درسته ؟ 

  • محمد اشرافی22 تير ۱۴۰۱

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

  • محمد اشرافی22 تير ۱۴۰۱

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

     

    public override bool IsValid(object? value)
    {
                var fileInput = value as Microsoft.AspNetCore.Http.IFormFile;
                if (fileInput == null)
                    return true;
    
                return fileInput.IsImage();
    }
  • Amirmhdi Gol22 تير ۱۴۰۱

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

  • محمد اشرافی22 تير ۱۴۰۱

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

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

  • محمد اشرافی22 تير ۱۴۰۱

    اگه 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 Gol22 تير ۱۴۰۱

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