تاپیک مورد نظر بسته شده است
درود
در هر جایی از پروژه که من یک تصویر رو در سمت کنترولر دریافت میکنم ابتدا روی اون یک If میزام که در صورتی که عکسی انتخاب نشده بود پیغام مناسب اجرا بشه :
[AjaxOnly] [ValidateAntiForgeryToken] [HttpPost] public ActionResult SaveImage(HttpPostedFileBase UserImg, int ImageNumber, string PId) { try { if (UserImg != null) { // return View(); } else { string Msg = "لطفا ابتدا یک تصویر را انتخاب کنید "; return MessageBox.Show(Msg, MessageType.Warning); } } catch (Exception e) { string Msg = Convert.ToString(e); return MessageBox.Show(Msg, MessageType.Error); } }
ولی به یه دلیل نام معلوم حتی در صورتی که یک فایل انتخا شده باشه و تصویر در سمت کنترولر دریافت شده باشه همیشه ابتدا دستورات قسمت else اجرا میشه و بعد دستورات قسمت اصلی اجرا میشه - یعنی در نمونه کد بالا ابتدا پیغام "لطفا ابتدا یک تصویر را انتخاب کنید" رو نشون میده و بعد میره دستورات قسمت اصلی رو اجرا میکنه - دلیل این اختلال چیه ؟
نکته : فایل تصویر بصورت Ajaxform به سمت کنترولر فرستاده میشه.
لطفا این ویدیو از تست رو تماشا کنید تا متوجه منظورم بشید :
حجم یک مگابایت لینک دانلود
شیوه صحیح چک کردن HttpPostedFileBase UserImg چیه ؟
بنده به این صورت چیک می کنم ASP.NET MVC HttpPostedFIleBase is null - Stack Overflow .
از این ابتدا دارای مقدار و پس از آن null می شود متعجبم ، بدون try تست کرده اید ؟
ممنون با کلی برسی و نگاه کردن یکی دیگه از پروژه هام فهمیدم علت چیه و مشکل حل شد .
در حالتی که فورم رو بصورت ایجکسی ایجاد میکنم - به صورت زیر :
@using (Ajax.BeginForm
وقتی داده ها رو صورت ایجکسی به سمت سرور میفرسته فایل HttpPostedFileBase دریافت نمیشه و بخاطر همین من فورم رو بصورت عادی
Html.BeginForm
ایجاد میکنم و از یه افزونه استفاده میکنم که فورم رو ایجکسی میکنه و فایل رو هم به سمت کنترولر مبفرسته!
مشکل فعلی بخاطر این بود که هم فورم رو بصورت Ajax.BeginForm زده بودم و هم اون افزونه رو بهش اضافه کرده بودم و بخاطر همین قاطی کرده بود.
بابت این مورد ASP.NET MVC HttpPostedFIleBase is null - Stack Overflow هم ممنون مفید بود.
خداروشکر اون مورد DropZone که معرفی کردید یه همچین مکشلی رو نداره.
هیچ کاربری تا کنون از این پست تشکر نکرده است
تاپیک مورد نظر بسته شده و امکان درج پاسخ وجود ندارد
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)