DotNetZoom
2.95K subscribers
342 photos
18 videos
36 files
606 links
DotNetZoom
💎 Everything about .NET

ارتباط با مدیر و تبلیغات آگهی استخدام:
@mjebrahimi

لینک گروه ASPNET Core:
https://t.iss.one/+ufG25x7lVFgyYTNk
Download Telegram
Forwarded from طراحی و توسعه وب
🔴 آموزش پروژه محور #ES6
#Frontـend , #intermediate
—----------------------
جاوا اسکریپت در سال 2015 دوباره باز نویسی شد و یک سری تغیرات اساسی درش بوجود اومد.
این تغییرات خیلی از مشکلات رو حل کرد و یک سری بهبود ها رو به #Javascript اعمال کرد.
خیلی از فریم ورک های معروف در نسخه های جدیدی که منتشر کردن از EcmaScript 6 استفاده کرده اند.
حال آینده نزدیکی قرار است #ES7 هم منتشر شود! شما هم الان می توانید #ES6 رو با یک پروژه یاد بگیرید 😊
—---------------------
لینک آموزش ها : https://ccoenraets.github.io/es6-tutorial/index.html
لینک اسلاید معرفی : https://coenraets.org/present/es6/

پیشنهاد @webly اینه که هم خودتون ES6 رو یاد بگیرید هم اینکه لینک ها رو با دوستانتون به اشتراک بگذارید.😉
با احترام
#Bootstrap #AspMvc

براحتی کد های Bootstrap رو در ASP NET MVC بنویسید

https://www.twitterbootstrapmvc.com/

@IranAspMvc
#AspMvc #Model

چه تفاوتی بین model (با m کوچک) و Model (با M بزرگ) در ویوها وجود دارد؟

پاسخ: model (با m کوچک)، معمولا در ابتدای ویو و برای تعریف نوع (strong type) که از کنترلر ارسال میشود، استفاده میگردد.
برای مثال، قطعه کد زیر عنوان میکند که نوع مدل تعریف شده (strong type)، از جنس Models.Product است:
@model Models.Product
و در واقع، منجر به تعریف متغیری به نام Model میشود و عملکردی شبیه به خط زیر خواهد داشت:
Models.Product Model;
که در این صورت، Model (با M بزرگ) یک نمونه (instance) از آن نوع تعریف شده است و میتوان همانند یک متغیر، در کل ویو به آن دسترسی داشت.
به طور خلاصه، Model یک متغیر است و model یک کلمه ی کلیدی است که نوع Model را مشخص میکند.
#AspMvc #HtmlHelper

Html Helper And Inline Helper In ASP NET MVC
همگی با مفهموم HtmlHelper آشنایی دارید. Extension Method هایی که برای سفارشی سازی تگ های Html به کار می ورد.
ولی چون در محیط سی شارپ کد نویسی میشه. نوشتن کد های html کمی سخت هست. ولی مزیتی که داره unit testable بودن و عدم وابستگی به view engine و از همه مهمتر اینه که میتونین پارامتر ورودی Expression بگیرید که این بهتون کمک میکنه بتونید html helper های مخصوص Property بنویسید به صورت
@Html.CustomHelperFor(p => p.MyProperty)
اطلاعات بیشتر :
https://goo.gl/UuygWZ
https://goo.gl/M4lNea
نوع دیگری از helper ها وجود دارد به نام Inline Helper که توسط اون ما می تونیم توی ویو و ... (کلا هر جا که Razor باشد) با سینتکس razor بنویسیم
مثال :
@helper CustomHelperFor()
{
<span>...</span>
}
مزیتی که این نوع helper ها داره اینه که چون در محیط razor هست. نوشتن کد های html راحت تر هست ولی مزایای HtmlHelper که در بالا نام بردیم رو نداره.
و عیب دیگر اینه که وقتی در یک ویو این helper رو تعریف کنیم در ویو ها و جا های دیگه پروژه بهش دسترسی نداریم.
حال برای رفع این مشکل باید inline helper مون رو داخل یک فایل cshtml مثلا (MyFileName.cshtml) بنویسیم و اون رو داخل پوشه App_Code قرار بدیم.
و اکنون با دستور زیر میتونیم اون helper رو صدا بزنیم
@MyFileName.NameOfInlineHelper()
اطلاعات بیشتر :
https://goo.gl/RA397B

@IranAspMvc
#AspMvc #HtmlHelper
https://keyurraval.com/blogimages/Asp_DotNet_MVC_Application_From_Scratch_12.png

تا حالا حتما براتون پیش امده که بخواین توی PartialView یا InlineHelper بخواین کد Script یا Css بنویسید.
چون به section های داخل layout دسترسی نداریم باید به صورت inline و در همان جا کد ها و فایل های css و js رو قرار بدیم.
مشکل اولش اینه که چون PartialView یی که داخلش کد جاواسکریپت نوشتین در لابلای صفحه استفاده شده، در نتیجه اسکریپت هاتون هم در لابلای صفحه Render میشه. و مثلا فایل jquery.js رو در پایین صفحه load کرده باشین و لابلای صفحه بخواین از توابع jquery استفاده کنین به مشکل بر میخورین و کار نمی ده.
زیرا (اگر View Source صفحه رو ببینید، متوجه میشید) که قبل از اینکه فایل jquery.js پایین صفحه load شده باشه، شما امدین و از توابع jquery استفاده کردین (قبل از load شدن کتابخانه jquery) پس کد هاتون خطا میده و اجرا نمیشه.
مشکل دومش اینه که چون کد های script و css اتون در لابلای صفحه render میشه دیگه اون تمیزی و یکپارچگی رو در کد های script اتون ندارید. و همچنین از best practice (فایل های جاوااسکرپت باید در پایین صفحه - قبل از پایان تگ body و فایل هایی css باید در بالای صفحه داخل تگ head قرار گیرد) از این مهم نیز محروم خواهیم شد.

در لینک زیر ترفندی رو یاد میگیرید که توسط اون یک متد مشابه RenderBody که در layout می نویسیم (به نام RenderScript) و از اون پس هر جای پروژه (view,helper,partialview,...) می توانیم کد های جاوااسکریپت خود را در محل مخصوص اون در layout بنویسیم
https://goo.gl/R4h3HH

@IranAspMvc
#Component , #DLL , #Embedded , #WebResource

برای ساخت کامپوننت یا مجتمع کردن فایل های استاتیک (javascript, css , image , ...) داخل یک dll باید بتونیم اولا فایل هامون رو داخل resource (محل ذخیره سازی منابع در dll) اضافه کنیم و دوم اینکه بتونیم از این فایل های embed شده (جا سازی شده) داخل dll استفاده کنیم.

How To Emebed/Access To Javascript In .Net DLL
Managing Your JavaScript Library in ASP NET
Using embedded WebResources throughout WebResource.axd
#Optimize, #Comprss
برای استفاده از تصاویر در وب بهتره که همیشه اونها رو Optimize و فشرده سازی کنین
یکی از بهترین سایت های Image Optimizer
https://kraken.io/web-interface
و یکی از بهترین برنامه های مخصوص این کار
https://luci.criosweb.ro/riot/
این عمل تا حدود 70% از حجم فایل تصویری کم میکنه و افت کیفیت کمی رو به همراه داره
@IranAspMvc
#GoogleMap , #GMaps , #Map
یکی از بهترین و کامل ترین کتابخانه ها جهت کار با GoogleMap
https://goo.gl/BnAC8h
قابلیت ها :
نقطه (Marker) گذاری روی نقشه
جستجو بر اساس نام مکان
طراحی Overlays روی نقشه : مسیر - محوطه
مسیریابی حرفه ای
نمای 360 درجه ایساده (Street View)
انواع نقشه ها : نقشه ماهواره ای - نقشه خیابانی
و ...
https://hpneo.github.io/gmaps/

@IranAspMvc
DotNetZoom
GMaps.zip
👆 یک مثال با کتابخانه Gmaps در ASP Webform
#ViewBag #ViewData #TempData #Comparison

مقایسه ViewData , ViewBag , TempData
#DLL, #AspMvc, #Route
در پروژه های بزرگ و Enterprise برای جدا سازی و بخش بندی قسمت های مختلف پروژه معمولا کنترولر های پروژه رو در یک assembly جداگانه ایجاد میکنند.
برای اینکار باید ابتدا یک پروژه Class Library ایجاد کرده و تمام Controller هاتون رو به اونجا انتقال بدید (دقت داشته باشید که کلاس(Controller) ها باید از کلاس پایه System.Web.Mvc.Controller ارث بری کرده باشه)
سپس Reference این پروژه که خروجی آن یک DLL یا Assembly هست رو به پروژه Asp MVC خودتون اضافه کنید.
حالا فقط کافیه تنظیماتی رو توی RouteConfig پروژه انجام بدین تا پروژه Mvc بتواند کنترولر های پروژه دیگر را مدیریت کند.
کد آن در تصویر پست بعد میباشد
@IranAspMvc
#EntityFramework #CodeFirst #EFCore
این روزها با نزدیک شدن به زمان انتشار نسخه های نهایی ASP .NET Core 1.0 و EF Core 1.0 و نیز با توجه به تغییرات بنیادی که در ساختار آنها شکل گرفته، ترسی از بابت عدم پشتیبانی از برخی ویژگی های نسخ قبلی، همانند ویژگی Database First در EF Core، در بین توسعه دهندگان ایجاد شده است. در ادامه به تشریح معنای واقعی Code First بودن EF Core و نیز نگرانی بی مورد برخی توسعه دهندگان خواهیم پرداخت.
در ابتدا باید بدانیم مفهوم CodeFirst بودن در EF Core چیست؟ آیا با توجه به عدم پشتیبانی از مدل Database First دیگر نمیتوان از یک دیتابیس موجود و آماده استفاده کرد؟ در پاسخ باید بگوییم خیر این طور نیست. این نسخه، مدل Database First را به مفهموم استفاده از فایل EDMX که یک مدل designer-based است پشتبانی نمیکند و این روش از طرف مایکروسافت منسوخ شده است، اما به هیچ وجه به این مفهوم نیست که نمیشود Database First کار کرد! شما در EF Core 1.0 میتوانید از طریق reverse-engineer، کلاس های POCO و DbContext و Mapping ها را برای دیتابیس خودایجاد کنید و در ادامه Code First کار کنید. حتی برای این منظور و راحتی کار توسعه دهندگان، ابزارهای زیادی به صورت Extension برای ویژوال استودیو در نظر گرفته شده است که از معروف ترین آنها میتوان به EF Power Tools و EntityFramework Reverse POCO Code First Generator اشاره کرد. شاید هم به همین خاطر است که به جای اصلاح Code First که کمی گیج کننده است، اصطلاح Code base یا Code only را برای آن مناسب تر دانسته اند.
مطالب تکمیلی در این باره را میتوانید از طریق لینک زیر، که توسط خانم Julie Lerman و بسیار ساده و روان نوشته شده، مطالعه بفرمایید.

https://msdn.microsoft.com/en-us/magazine/dn890367.aspx
#EntityFramework , #ChangeTracking

وقتی از EF استفاده میکنید. مثلا چیزی Add یا Edit میکنید. EF برای اینکه این تغییرات رو در سمت دیتابیس ذخیره کنه. اول باید بفهمه که چه تغییراتی رخ داده؟! مثلا ایا چیزی Add شده ؟ یا فیلدی ویرایش شده؟ یا شاید شی ای حذف شده. و یا حتی ممکنه شما یه شی رو به کاربر جهت ویرایش نشون بدید ولی کاربر بدون اینکه فیلدی رو تغییر بده رو دکمه "ثبت ویرایش" کلیک کنه. در این حالت حتی EF میفهمه که هیچ تغییری روی این شی انجام نشده. در نتیجه تغییری در سمت دیتابیس هم اعمال نمیکنه.
حالا برای اینکه EF بفهمه این شی شما تغییر کرده یا نه؟ (change tracking یا مکانیزم ردیابی تغیرات) برای این کار از روش اصطلاحا snapshot tracking (تصویر برداری لحظه مثلا) استفاده میکنه.
یعنی وقتی یک شی به context اضافه میشه. میاد و یه نسخه ازش (تصویرش) رو ذخیره میکنه (با مقادیر original ) و به هنگام فراخوانی متد DetectChanges میاد و مقادیر جدید (new value) رو با مقادیر قبلی (original value) مقایسه میکنه و میفهمه که این شی تغییر کرده یا نه. و حتی اینکه کدام فیلد هاش تغییر کره. تا کوئری متناسب با همون تغییرات رو بسازه.
حالا لازم نیست این متد DetectChanges رو خودمون دستی فراخوانی کنیم بلکه با فراخوانی یک سری از متد هایی که در بالا عنوان شده این متد DetectChanges نیز فراخوانی میشه تا این تغییرات رو بفهمه
در EF به این مکانیزم ردیابی تغییرات ChangeTracking گویند. و دیگر هیچ ...

@IranAspMvc
#Utility
متد کمکی نام دهی فایل ها در سرور جهت ذخیره سازی

کلاس زیر که حاوی دو Extension Method هست بهتون در نام دهی فایل های اپلودی از کاربر به سمت سرور جهت ذخیره سازی کمک میکنه
مواردی که در نام گزاری باید رعایت شود.
1- تکراری نبودن نام ها جهت جلوگیری از overwrite شدن فایل ها
2- بهتره نام خود فایل استفاده بشه بجای اینکه از یک عدد یا متن random مثل GUID استفاده بشه (توی سئو تاثیر داره)
3- جهت نظم بیشتر فایل ها بهتره در پوشه های جداگانه سال/ماه/روز ذخیره بشه
متد کمکی کلاس زیر همه این موارد رو مدیریت میکنه و در صورت تکراری بود به سبک نام گذاری ویندوز یک (عدد) بهش اضافه میکنه
مثال:
/Images/1394/11/19/test.jpg
/Images/1394/11/19/test (2).jpg

طرز استفاده ازش هم به این صورته
GetFileName("yourFilename", "pathToSave", ["stringFormatOfDate"])
مثال —---------------—
GetFileName("test.jpg", "uploadfiles/post/images")
خروجی:
\uploadfiles\post\images\1394\11\19\test.jpg
پیشرفته تر —---------
GetFileName("test.jpg", "uploadfiles/post/images", "yy/MM")
خروجی:
\uploadfiles\post\images\94\11\test.jpg

خروجی هم که میده Absolute Path هست و مناسب و آماده ذخیره سازی فایل در این آدرس

@IranAspMvc
چه مقدار از امکانات #VisualStadio 2015 را می شناسید ؟
https://goo.gl/FKKfPK

Languages :
C# - VB NET - F#
C++
ASP NET
HTML
JavaScript - EcmaScript 6 support
CSS
LESS - SASS
JSON
Node.js
PHP
Python
CoffeeScript
TypeScript
Othere : YAML - Dart - Markdown - Windows PowerShell

Client Side Frameworks :
Apache Cordova
Angular js
React js
Bootstrap CSS
Aurelia
Knockout js
Othere : Backbone - Durandal - Ionic - Ember - Breeze

Package Managers :
NuGet - Bower - npm

Task runners :
Grant - Gulp

Testing :
Unit Test - UI Test
Performance Test - Load Test

====================
https://webtooling.visualstudio.com/languages/

@IranAspMvc