درود
توضیح :
من برای بخش اضافه کردن محصول به فروشگاه از یک تصویر Index برای نمایش در صفحه اول و هشت تصویر برای گالری استفاده میکنم
که کاربر در صفحه اضافه کردن محصول جدید تمام مشخصات و این تصاویر را انتخاب میکند و در زمان پست شدن به سمت کنترولر در رویداد [HttpPost] دستورات اضافه کردن مشخصات محصول و بعد ذخیره کردن عکس ها انجام میگیره و در صورت مموفقیت آمیز بودن پیغام مناسب نمایش می یابد.
این رو هم بگم که کل موراد پست شدن سمت کنترولر و برگشت پیغام ها بصورت Ajax انجام میشه !
مشکل :
برای زمانی که پروژه روی هاست بره آپلود کردن این 9 تا عکس ( عکس های گالری حداکثر ممکنه تا 3 مگابایت باشن) خیلی خیلی زمان میبره و کاربرمدیر مدت زیادی رو باید منتظر بمونه تا کل این فایل ها آپلود بشن بعد پیغام موفقیت نمایش میابد و اگه زمان انتظار زیاد باشه ممکنه فکر کنه که اصلا کاری صورت نگرفته !
را ه حل من :
برای این مشکل من بنظرم باید همون زمان که عکس رو از تو کامپیوتر انتخاب میکنه و بعد پیشنمایشش نشون داده میشه یه گزینه Upload براش بزارم که همون موقع فایل رو آپلود کنه .
و میخوام برای هر کدوم از تصاویر یک Ajax.form بزارم که بازدن دکمه Uplad به سمت کنترولر بره و عکس رو آپلود کنه .
سوالات ؟
1 - بنظرتون این شیوه کار صحیحه ؟
2 - برای آپلود فایل من از یک Html.Helper که بصورت دستی نوشته شده استفاده میکنم :
که متاسفانه در سمت سرور وقتی میخوام خالی یا پر بودنش رو چک کنم حتی موقعی که یک عکس انتخاب شده دستور If که خالی بودن رو چک میکنه اجرا میشه و پیغام نمایش پیدا میکنه :
البته ذخیره شدن و همه چیز درست انجام میشه , فقط شرطی که گذاشتم اگه UploadGalleryImage1 == null بود اشتباهی اجرا میشه و پیغام رو نمایش میده.
اگه Html.Helper یا مورد بهتری رو برای آپلود کردن عکس سراغ دارید لطفا معرفی کنید ؟
3 - چطوری زمانی که عکس در حال آپلود شدنه نوار پیشرفت اون رو نشون بدم - که کاربر بفهمه عکس در حال آپلود شدنه ؟
اگر sample ی برای Asp.net Mvc5 مثل این نمونه سراغ دارید لطفا معرفی کنید - اگه کد های سمت سرور (asp.net mvc) هم نوشته شده باشه خیلی هم بهتر.
مدیر های گرامی خیلی ببخشید زیاد نوشتم , امیدوارم منظورم رو رسونده باشم , عجله ای ندارم ,هر وقت فرصت کردید پاسخ رو بدید.
خوب شیوه بهتر چیه ؟
من کل موضوع رو توضیح دادم که اگه خوب نیست یک شیوه بهتر رو پیشنهاد بدین .
بهتره به صورت کلی آپلود رو انجام دهید یا این که به صورت یک صف عمل کنید و فرآیند هر آپلود را نمایش دهید و پس از تمام شدن آپلود یک عکس، عکس بعدی را آپلود کنید و این که عمل میتواند در سمت client صورت بگیرد لینک هایی که قرار دادم میتوانند مفید باشند.
ممنون ,الان موارد پیشنهادی رو مشاهده کردم - مورد دوم که برای asp.net webform آموزش داده(اگه درست متوجه شده باشم) ولی مورد اول Mvc بود و بنظر خوب میاد ولی خوب اون UserInterface لازم رو نداره .
تا حالا Kendu Ui رو به پروژه اضافه نکردم چون نمیخواستم حجم پروژه و صفحات بالا بره ,
ولی برای همین مورد اول که شما معرفی کردید لازمه که تعدادی dll و اسکریپت رو اضافه کرد و در کل همون حجم به پروژه اضافه میشه .
نظر شما چیه از Kenu Ui استفاده کنم بهتره یا نه ؟
این لینک مربوط به موارد Kedu Ui هست ,درسته ؟
ظاهرش که بنظر عالی میاد
سنگینه این کامپوننت و ممکنه مشکل کپی رایت بر بخورید
از نمونه های jquery استفاده کنید بهتره
قسمت Mvc :
http://s9.picofile.com/file/8305166042/mvc4_cs.rar.html
1 - این مورد رو من برسی کردم با Debug هم جلو رفتم فایل ها رو به سمت کنترولر نمیفرسته ! اگه من 8 تا عکس رو انتخاب کنم چطوری در سمت کنترولر دریافتشون کنم تا بتونم ذخیرشون کنم ؟
2 - بعد این نوار پیشرفت دانلود که نشون میده واقعا روند دانلوده ؟ چون من یه فایل ویدیو رو پسوندش رو به jpg تغییر دادم و انتخابش کردم بازهم نوار پیشرفت تا 100% رفت و بعد خطا داد - یعنی اصلا کاری به روند دانلود نداره و 0 تا صد رو تویه ثانیه میره .
نوار پیشرفت رو باید زمان سیو شدن روی سرور یا همون هاست نشون بده - اون مثلا 20 یا 40 ثانیه که طول میکشه تا عکس روی هاست آپلود بشه .
میتونید به صورت زیر فایل هایی که به کنترلر شما ارسال می شود را دریافت کنید:
foreach (string fileName in Request.Files) { HttpPostedFileBase file = Request.Files[fileName]; ... }
روی هاست تست کردید ؟
چه خطایی دریافت کردید؟
نه روی هاست تست نکردم , داخل همین Visoul Studio تست کردم .
مشکل اینجاست که این روند پیشرفت آپلود که نوشن میده مربوط به زمانی که برای سیو شدن صرف میشه نیست و زمان انتخاب فایل در سمت کاربر نمایش داده میشه و برای همه عکس ها یکسانه !
این تست رو ببینید :
http://s8.picofile.com/file/8305183218/Test.mp4.html
فکر کنم روی سرور درست کار کنه
مهندس این مورد برای asp.net Mvc قابل استفاده نیست ؟
از امروز صبح فکر کنم بالای بیست مورد رو دیدم همشون در همون موقع آپلود در سمت کلاینت اون پروگس بار پیشرفت دانلود رو نشون میدن و ربطی به زمان آپلود اصلی و سیو کردن نداره!
میشه یکم توضیح بدید چرا اینطوریه ؟ من کلا گیج شدم !
بنظرم اگه در زمان اجرای دستور Save تصاویر در کنترولر یه Lazyloading نشون بدم خیلی مفهموی تر باشه .
این که روند پیشرفت رو نشون بدید به سرور مربوط نمیشه باید تو client کنترل بشه ، و این که حتما روی سرور تست کنید. اگر مثل ها و سوال های توی نت رو ببینید اکثر سوال ها روی کلاینت جواب دادن نه سرور این مخزنی که فرستادید خوبه ازش استفاده کنید و دارای مستندات می باشد : Basic plugin · blueimp/jQuery-File-Upload Wiki
این مورد در پروژه فروشگاهی Iris Store استفاده شده :
من خواستم سروس رو اجرا بگیرم خطا های زیر رو میده :
امکانش هست یه راهنمایی بفرمایید ؟
افزونه AutoT4 و RazorGenerator را نصب کنید :
Razor Generator - Visual Studio Marketplace
AutoT4 - Visual Studio Marketplace
پس از آن دستورات زیر را اجرا کنید کنید:
Enable-RazorGenerator
Update-Package
یک بار پروژه را build و clean کنید و سپس آن را restart کنید.
ممنون خطاهای قبلی رفع شد !
منتهی دستور
Enable-RazorGenerator
کار نکرد :
الان خطا های زیر رو میده :
یه نکته مهم پوشه بندی های این پروژه هست :
علت این پوشه بندی ها چیه ؟ ربطی به CodeFirst داره ؟
اگر فایل های cshtml شما به دو بخش تقسیم شده است t این ارور را نادیده بگیرید.
و این که بر روی T4MVC.tt کلیک راست کرده و run custom tool را انتخاب کنید.
منظورتون پوشه های داخل Web است یا خیر؟
اگر بله ، خیر این پوشه ها شامل ActionFilter ها و کلاس های مربوط به IOC و AutoMapper و یک سری کلاس سفارشی می باشد.
پروژه Datalayer مربوط به EF می باشد.
در کد نویسی برای شما قانونی وجود ندارد که بگوید شما چه کار باید بکنید و چه کار نباید بکنید این که در پروژه خودتان پوشه های جدید ایجاد کنید و کلاس ها و قسمت های سفارشی خودتان بنویسید بر عهده شماست. و این مشکل در اکثر برنامه نویس ها است که ذهن خود را نسبت به کارشان محدود می کنند،
این مورد رو هم انجام دادم درست نشد.
همه جا ازین مورد Mvc. ایراد میگیره :
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)