ورود

View Full Version : سوال: اشتباه دستور If در چک کردن مقدار داشتن فایل HttpPostedFileBase ارسالی از سمت View



alibahman47
سه شنبه 14 شهریور 1396, 16:08 عصر
درود

در هر جایی از پروژه که من یک تصویر رو در سمت کنترولر دریافت میکنم ابتدا روی اون یک 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 به سمت کنترولر فرستاده میشه.

لطفا این ویدیو از تست رو تماشا کنید تا متوجه منظورم بشید :
حجم یک مگابایت لینک دانلود (http://s9.picofile.com/file/8305616792/Errir_If.mp4.html)

شیوه صحیح چک کردن HttpPostedFileBase UserImg چیه ؟

Moien Tajik
سه شنبه 14 شهریور 1396, 16:43 عصر
شیوه صحیح چک کردن HttpPostedFileBase UserImg چیه ؟
روش درست چک کردن خالی نبودن فایل این هست :
if (myFile != null && myFile.ContentLength != 0)




نکته : فایل تصویر بصورت Ajaxform به سمت کنترولر فرستاده میشه.

لطفا این ویدیو از تست رو تماشا کنید تا متوجه منظورم بشید :
حجم یک مگابایت لینک دانلود (http://s9.picofile.com/file/8305616792/Errir_If.mp4.html)


اینکه یبار موس رو hover میکنید فایل وجود داره و دوباره hover میکنید null هست عجیبه !
فرمتون رو چجوری submit میکنید به سمت کنترلر ؟ با change شدن file input هست یا click روی submit button ؟
احتمالا چندبار فرمتون Submit میشه واگرنه دلیلی نداره یبار null باشه و یبار data داشته باشه !

این رو هم ببینید : http://powerdotnetcore.com/asp-net-mvc/asp-net-mvc-simple-ajax-file-upload-using-jquery

alibahman47
سه شنبه 14 شهریور 1396, 18:04 عصر
روش درست چک کردن خالی نبودن فایل این هست :
if (myFile != null && myFile.ContentLength != 0)




اینکه یبار موس رو hover میکنید فایل وجود داره و دوباره hover میکنید null هست عجیبه !
فرمتون رو چجوری submit میکنید به سمت کنترلر ؟ با change شدن file input هست یا click روی submit button ؟
احتمالا چندبار فرمتون Submit میشه واگرنه دلیلی نداره یبار null باشه و یبار data داشته باشه !

این رو هم ببینید : http://powerdotnetcore.com/asp-net-mvc/asp-net-mvc-simple-ajax-file-upload-using-jquery

ممنون با کلی برسی و نگاه کردن یکی دیگه از پروژه هام فهمیدم علت چیه و مشکل حل شد .
در حالتی که فورم رو بصورت ایجکسی ایجاد میکنم - به صورت زیر :


1

@using (Ajax.BeginForm






وقتی داده ها رو صورت ایجکسی به سمت سرور میفرسته فایل HttpPostedFileBase دریافت نمیشه و بخاطر همین من فورم رو بصورت عادی


1

Html.BeginForm






ایجاد میکنم و از یه افزونه استفاده میکنم که فورم رو ایجکسی میکنه و فایل رو هم به سمت کنترولر مبفرسته!

مشکل فعلی بخاطر این بود که هم فورم رو بصورت Ajax.BeginForm زده بودم و هم اون افزونه رو بهش اضافه کرده بودم و بخاطر همین قاطی کرده بود.


لینک معرفی شده هم خیلی مفید بود مممنون.