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
#StimulSoft #Report #AspMvc
آموزش گزارش گیری با استفاده از STIMULSOFT در ASP.NET MVC
https://goo.gl/c8EANC
#Bower #Front-End

مدیریت کتابخانه های کلاینتی با استفاده از Bower
امروزه در توسعه ی وب سایت و یا اپلیکیشن های تحت وب، استفاده از تعداد زیادی کتابخانه های فرانت اند مانند jQuery، Bootstrap، Angular و ... انکار ناشدنی است. استفاده کردن از هر یک از این کتابخانه ها، نیازمند رفتن به سایت مربوطه، پیدا کردن ورژن مورد نظر، دانلود و در نهایت انتقال آن به پوشه ی مربوطه در پروژه می باشد. علاوه بر آن، شما باید به صورت مکرر به وب سایت های مربوط به آن ها سر بزنید تا از نسخه ی جدید باخبر شوید و برای استفاده از ورژن جدید، دوباره همان مراحل دانلود و ... را تکرار نمایید. از همه ی این ها گذشته، تصور کنید نیاز به استفاده از کتابخانه ی Bootstarp که به کتابخانه ی jQuery وابسته است را دارید، در این حالت شما برای استفاده از Bootstarp باید به سایت jQuery هم بروید و آن را هم دانلود نمایید.

شاید برای یکبار رفتن مراحل فوق چندان برای شما پیچیده به نظر نرسد، اما اگر زیاد با این کتابخانه ها سروکار داشته باشید، ممکن است با خود فکر کنید خیلی خوب میشد اگر ابزاری وجود داشت که خودش تمامی این مراحل را انجام دهد. بله وجود دارد! Bower دقیقا همین کار را برای شما میکند. Bower در مدیریت پکیج های فرانت اند به کمک شما می آید و وظایفی چون دانلود، به روز رسانی و مدیریت وابستگی ها را بر عهده میگیرد، تا شما با خیال راحت به کار توسعه بپردازید. نصب و استفاده از bower نیز بسیار ساده است. اگر علاقه مند به آشنایی بیشتر با این ابزار مفید هستید، ادامه ی این مطلب را در پست زیر دنبال نمایید:

https://www.codementor.io/bower/tutorial/beginner-tutorial-getting-started-bower-package-manager
#Editor #HtmlEditor #Plugin
CodeMirror: Html/Javascript (and over 100 languages) Source Editor
https://codemirror.net/
#CheckList #AspNet #AspMvc #Performance
https://www.lyntonweb.com/hs-fs/hub/74005/file-2275583083-jpg/Checklist1.jpg

چک لیست تهیه یک برنامه AspNet MVC
https://goo.gl/yuy6SB
چک لیست برنامه های AspNet
https://goo.gl/Fj7Rwi
چک لیست Performance برنامه های AspNet
https://goo.gl/wjdXYp

@IranAspMvc
ما سه نوع آدرس دهی داریم
https://jennybc.github.io/2014-01-27-miami/img/lessons/swc-shell/absolute_relative_path.png

Absolute Path (آدرس دهی دقیق)
c:\new folder\wwwroot\images\aaa.jpg
این نوع ادرس دهی دقیقا میگه از کدام درایو شروع کن و فایل رو پیدا کن.
—------------------—
Virtual Path (آدرس دهی مجازی نسب به روت)
~/images/aaa.jpg
این نوع آدرس دهی میگه هرکجای سایت که هستی (حتی اگه 10تا پوشه جلوتر از روت هستی) باید بری به روت (ریشه) سایت و از اونجا مسیر رو پیدا کنی .
—------------------—
Relative Path (آدرس دهی نسبی)
images/aaa.jpg
این نوع آدرس دهی میگه هر کجای سایت که هستی باید از کنار خودت مسیر رو پیدا کنی (یعنی کنار خودت پوشه ای به نام images هست که فایل aaa.jpg توش هست) حالا اگر 10 تا پوشه نسبت به روت سایت جلوتر باشه در این روش بر نمیگرده از روت سایت مسیر رو پیدا کنه بلکه از کنار خودش پیدا میکنه.
در این روش برای اینکه بگین یه پوشه برگرد عقب از (..) استفاده میکنیم.
../images/aaa.jpg
یعنی یه پوشه برگرد عقب و از اونجا مسیر رو پیدا کن.
—------------------—
نکته: سمت سرور میتونیم از Virtual Path (~) استفاده کنیم ولی سمت کلاینت و مرورگر باید از Relative Path استفاده کنیم چون فقط این روش آدرس دهی رو میفهمه.
حالا دستور Url.Content کارش اینه که آدرس های Virtual Path که با (~) شروع میشوند رو از روت سایت پیدا میکنه و به Relative Path تبدیل میکنه.
موتور Razor از mvc4 اونقدر هوشمند شده که اگر شما آدرس یک فایل رو به صورت Virtual Path بنویسید. مثلا
<script src="~/Scripts/jquery-1.11.3.min.js"></script>
خودش با استفاده از دستور Url.Content اون رو به Relative Path تبدیل میکنه
پس دیگه فرقی نمیکنه که از Url.Content استفاده بکنین یا نه
اطلاعات بیشتر :
https://beletsky.net/2012/04/new-in-aspnet-mvc4-razor-changes.html

@IranAspMvc
#JSON , #JSON.NET , #ObjectToJson , #JsonToObject

https://goo.gl/0g6Mw2
تبدیل JSON به شی معادل آن در .NET (و برعکس : تبدیل یک شی دات نتی به مقدار JSON معادل آن)
شاید براتون پیش امده باشه که یک شی json رو دارید و میخواید مقدار معادلش رو توی دات نت به دست بیارید تا مثلا توی دیتابیس ذخیره کنین یا توی گرید مقادیرش رو نمایش بدین
برای اینکار ابتدا باید کلاس معادل اون JSON رو توی دات نت بسازید
سایت زیر همین کارو براتون میکنه. مقدار json رو بدید تا کلاس معادلش رو براتون بسازه
https://json2csharp.com/
برای تبدیل json به یک شی و بلعکس، ما سه روش معمول داریم
1- استفاده از کلاس DataContractJsonSerializer که توی dll و namespace زیر قرار داره و از کلاس های خود دات نت هست.
add dll System.Runtime.Serialization.dll
using System.Runtime.Serialization.Json
2- استفاده از کلاس JavaScriptSerializer که در dll و namespace زیر قرار داره و از کلاس های خود دات نت هست.
add dll System.Web.Extensions.dll
using System.Web.Script.Serialization
3- استفاده از کلاس JsonConvert که توی dll و namespace زیر قرار داره (این مورد از کلاس های خود دات نت نیست و برای استفاده از اون باید پکیچ JsonNet رو از ناگت دریافت کنین)
add dll Newtonsoft.Json.dll
using Newtonsoft.Json
بهترین و پیشنهاد شده ترین روش از لحاظ سرعت و قدرت پردازش همین روش هست 👍
https://www.newtonsoft.com/json
حالا کلاسی که در پست بعدی میفرستم، هر 3 این روش ها رو پیاده سازی کرده و بهتون کمک میکنه براحتی بتونین اشیائتون رو به json تبدیل کنین (وبلعکس)

@IranAspMvc
https://mva.microsoft.com/
سایت آموزشی تکنولوژی های ماکروسافت و موارد مرتبط با برنامه نویسی، زیر نظر خود ماکروسافت
سایت جالبیه پیشنهاد میکنم ببینید
@IranAspMvc
چرا استفاده از Session در MVC مناسب نیست.
https://goo.gl/vYIx8D
—---------------------------
اگر چندین درخواست با یک Session ID به موتور پردازشی ASP.NET وارد شوند و حداقل یکی از آن‌ها به صورت سشنی خواندنی+نوشتنی علامت گذاری شده باشد، اینگونه درخواست‌ها serialized می‌شود. به این معنا که این نوع درخواست‌ها در صف قرار داده شده و به ترتیب رسیدن، اجرا می‌شوند. این کار هم از این جهت لازم است که چندین درخواست یا به عبارتی چندین ترد همزمان، سبب انجام تغییرات ناخواسته‌ای در مقادیر سشن مورد استفاده نشوند.
و اگر چندین درخواست با یک Session ID به موتور پردازشی ASP.NET وارد شوند و تمام آن‌ها سشن «فقط خواندنی» باشند یا در آن‌ها سشن «غیرفعال» شده باشد، این درخواست‌ها به صورت موازی پردازش خواهند شد.
—---------------------------
یکی از بهترین جایگزین های session کوکی هست به شرط اونکه 2 مورد رو رعایت کنیم. (به دلایل امنیتی)
1-مقدار کوکی همیشه رمز نگاری شده باشه.
2-مقدار خاصیت HttpOnly برابر True باشه. با این وجود دیگه کوکی از طریق کلاینت قابل مشاهده یا تغییر نمیباشد. و فقط سمت سرور بهش دسترسی داریم. (یعنی با js دیگه به اون کوکی دسترسی نداریم)
—---------------------------
میتونین از دیتابیس های دیگری به جای SQLServer واسه ذخیره سشن ها استفاده کنین. مثلا دیتابیس های NoSQL. که واسه اینکار باید از Provier مخصوص اون دیتابیس استفاده کنین
که در لینک زیر لیست کاملی از اون ها رو مشاهده میکنید
https://www.nuget.org/packages?q=sessionstate

@IranAspMvc
#Reflector #Decompiler
واکشی و Decompile کردن های dll های دات نت
https://ilspy.net/
کد های دات نت بعد از کامپایل شدن به کد واسطی به نام
IL (Intermediate Language)
تبدیل میشود و در dll ها ذخیره میشوند.
برنامه سورس باز ILSpy میتواند dll های دات نت را Decompile کند و کد های آن را به هر دو زبان C# , VbNet تبدیل کند.
https://ilspy.net/images/screenshots/build199_decompilingtocsharp.png

@IranAspMvc
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