بایگانی دسته‌ی: Asp Form

الگوی ریپوزیتوری ( Repository Pattern ) در ASP.NET MVC

در این مقاله ، در مورد الگوی ریپوزیتوری (Repository Pattern ) که اغلب برای ایجاد برنامه های کاربردی اینتر پرایز استفاده می شود مطالبی می آموزیم. الگوی ریپوزیتوری می تواند UI برنامه، اجزای دسترسی به داده ها و Business logic را به لایه های مختلفی تقسیم می کند که به راحتی قابل نگهداری و قابل آزمایش هستند. این آموزش repository در mvc به صورت گام به گام می باشد.

برای درک بهتر الگوی ریپوزیتوری ، یک برنامه Client ایجاد خواهیم کرد. می توانیم هر نوع ساختار پروژه را برای اجرای الگوی ریپوزیتوری ایجاد کنیم. برای مثال، می توانیم یک کلاس ریپوزیتوری را در خود فولدر پروژه MVC ایجاد کنیم ، یا می توانیم پروژه ای در کلاس های مختلف ازlibrary را در به همان روش ایجاد کنیم یا می توانیم از معماری onion برای اجرای آن که شامل پروژه های کلاس های مختلفی از library و پروژه MVC در یک راه حل است را بکار گیریم.

برای سادگی کار، ما یک Repository class library و یک پروژه MVC را در یک سلوشن ایجاد خواهیم کرد. در الگوی ریپوزیتوری، می توانیم از ریپوزیتوری عمومی و کلی ( generic repository ) برای اجرای عملیات CRUD استفاده کنیم که می تواند برای اجرای عملیاتی خاص در entity ، توسط هر entity  از پروژه و ریپوزیتوری مرسوم استفاده شود. ابتدا یک کلاس Client در پروژه MVC ایجاد کنید.

namespace Client.Web.Models  
۰۲٫{  
۰۳٫    class Client  
۰۴٫    {  
۰۵٫        public int Id { get; set; }  
۰۶٫        public string Name { get; set; }  
۰۷٫        public string City { get; set; }  
۰۸٫        public string Email { get; set; }  
۰۹٫        public string Mobile { get; set; }  
۱۰٫    }  
۱۱٫}  

الگوی Repository در MVC

سپس، ما یک رابط ( interface ) را در پروژه ریپوزیتوری class library ایجاد خواهیم نمود. این رابط شامل عملیات عمومی پایگاه داده برای هر domain entity می باشد. ما آن را  IRepository نامگذاری می کنیم.

 

namespace Client.Repository  
۰۲٫{  
۰۳٫    public interface IRepository<T> where T:class  
۰۴٫    {  
۰۵٫        IEnumerable<T> SelectAll();  
۰۶٫        T SelectById(int id);  
۰۷٫        void Insert(T obj);  
۰۸٫        void Update(T obj);  
۰۹٫        void Delete(int id);  
۱۰٫        void Save();  
۱۱٫    }  
۱۲٫}  

سپس، یک کلاس ریپوزیتوری برای اجرای این رابط ایجاد خواهیم کرد. ما آن را class Repository نامگذاری خواهیم نمود.

 

namespace Client.Repository  
۰۲٫{  
۰۳٫    public class Repository<T>:IRepository<T> where T:class  
۰۴٫    {  
۰۵٫        protected readonly DbContext db;  
۰۶٫        public Repository(DbContext _db)  
۰۷٫        {  
۰۸٫            db = _db;  
۰۹٫        }  
۱۰٫        public IEnumerable<T> SelectAll()  
۱۱٫        {  
۱۲٫            return db.Set().ToList();  
۱۳٫        }  
۱۴٫        public T SelectById(int id)  
۱۵٫        {  
۱۶٫            return db.Set().Find(id);  
۱۷٫        }  
۱۸٫        public void Insert(T obj)  
۱۹٫        {  
۲۰٫            db.Set().Add(obj);  
۲۱٫        }  
۲۲٫        public void Update(T obj)  
۲۳٫        {  
۲۴٫            db.Entry(obj).State = EntityState.Modified;  
۲۵٫        }  
۲۶٫        public void Delete(int id)  
۲۷٫        {  
۲۸٫             T obj = db.Set().Find(Id);  
۲۹٫             this.Remove(obj);  
۳۰٫        }  
۳۱٫        public void Save()  
۳۲٫        {  
۳۳٫            db.SaveChanges();  
۳۴٫        }  
۳۵٫    }  
۳۶٫}  

برای دسترسی به داده ها ، ما از Entity framework code first approach استفاده می کنیم ، بنابراین یک کلاس DbContext ایجاد خواهیم کرد. کلاس ClientContext می تواند به صورت فهرست زیر نمایش داده شود:

 

namespace Client.Web.Models  
۰۲٫{  
۰۳٫    using System;  
۰۴٫    using System.Data.Entity;  
۰۵٫    using System.Linq;  
۰۶٫  
۰۷٫    public class ClientContext : DbContext  
۰۸٫    {  
۰۹٫          
۱۰٫        public ClientContext()  
۱۱٫            : base("name=ClientContext")  
۱۲٫        {  
۱۳٫        }  
۱۴٫          
۱۵٫        public virtual DbSet<Client> Client  { get; set; }  
۱۶٫    }  
۱۷٫}  

ارجاع به الگوی Repository در MVC

اکنون باید پروژه ریپوزیتوری class library را به پروژه MVC Web ارجاع دهیم. برای این کار، بر روی پروژه Client.Web راست کلیک کرده و پروژه reference Client.Repository را اضافه کنید. اکنون یک کنترلر را به پروژه Client.Web را (scaffold) خواهیم زد.

برای scaffold زدن، روی پوشه کنترلر راست کلیک کرده و کنترلر جدید را با استفاده از چارچوب نهاد (entity) انتخاب کرده و نام آن را Client Controller بگذارید. برای استفاده از کلاس IRepository برای عملیات پایگاه داده، موضوع و مقصود از کلاس ریپوزیتوری را ایجاد خواهیم نمود و روش کلاس ریپوزیتوری را نامگذاری خواهیم کرد. اکنون برنامه را بسازید و اجرا کنید . ما باید قادر باشیم عملیات CRUD را اجرا کنیم.

repository در mvc

فیلم آموزش Sql Server 2014 و ASP.NET و CSS و jQuery

فیلم آموزش برنامه نویسی

فیلم آموزش Sql Server 2014  و ASP.NET و CSS و jQuery   :  چرا باید  SQL Server و  Visual Studio را یاد گرفت ؟ امروزه برای ساخت یک پروژه وب ، برنامه نویس باید با ترکیبی از تکنولوژی های مختلف  آشنا  باشد تا بتواند یک نرم افزار تحت وب ایجاد کند . تمرکز اصلی در این دوره آموزشی بر  آموزش Sql Server 2014 مایکروسافت است اما در کنار آموزش این سیستم مدیریت پایگاه داده مایکروسافت مباحثی از جمله کار با پروژه ای وب در ویژوال استدیو ، زبان  #C و AJAX و CSS ,HTML و  JQuey  نیز آموزش داده می شود .

فیلم آموزش Sql Server 2014  و ASP.NET و CSS و jQuery مناسب چه افرادی است؟

  • کسانیکه تازه می خواهند SQL Server را یاد بگیرند
  • کسانیکه تازه می خواهند Asp.net را یاد بگیرند
  • کسانیکه تازه می خواهند Visual Studio را یاد بگیرند

فیلم آموزش Sql Server 2014

سر فصل های فیلم آموزش Sql Server 2014  و ASP.NET و CSS و jQuery

  • آموزش SQL
  • آموزش ۲۰۱۴ SQL SERVER
  • آموزش مباحث پایه ایی ویژوال استدیو ۲۰۱۳ بر مبنای پروژه وب
  • آموزش مباحث پایه ایی ASP.NET  به همراه  SQL Server 2014
  • آموزش زبان سی شارپ برای کار با پایگاه داده
  • آموزش جی کوئری برای کنترل ارتباط با پایگاه داده
  • آموزش اصول مدیریت SQL SERVER 2014
  • آموزش کار با توابع موجود در فیلم آموزش Sql Server 2014
  • آموزش نوشتن دستورات Join در SQL Server 2014
  • آموزش نحوه جمع آوری داده ها با استفاده از صفحات وب و ذخیره سازی آنها
  • آموزش فرمت بندی داده ها در صفحات وب و جداول پایگاه داده
  • آموزش کنترل کردن جریان برنامه با استفاده از دستورات if /else
  • آموزش نوشتن stored procedures
  • آموزش نحوه ایجاد توابع مورد نیاز در SQL SERVER 2014
  • آموزش نحوه نوشتن تریگر ها و ویوها در فیلم آموزش Sql Server 2014
  • آموزش خطایابی در SQL Server 2014
  • آموزش نحوه ایجاد ذخیره سازی و… تراکنش ها در SQL SERVER 2014
  • آموزش وارد کردن (import) داده ها از سایر برنامه ها به SQL SERVER 2014
  • آموزش نرمال سازی جدول ها
  • آموزش کار با XML در SQL SERVER 2014 و کنترل های ASP.NET
  • آموزش نحوه استفاده و ذخیره سازی متغیر های جداول در SQL SERVER 2014
  • آموزش کار با رشته ها و استفاده از توابعی مانند char  و substring
  • آموزش کار با توابع تاریخ مانند Datename و  Datepart و…
  • آموزش ساخت قالب های داینامیک با استفاده از جی کوئری
  • آموزش ساخت داشبورد با استفاده از C#/CSS/HTML/SQL و JQuery
  • آموزش نحوه اعتبار سنجی داده ها

 

 

 


دوره آموزشی Sql Server

آموزش LINQ – آموزش LINQ در سی شارپ

آموزش LINQ  : کتابی درباره آموزش LINQ در سی شارپ می باشد.

مقدمه PDF آموزش LINQ در سی شارپ : امروزه با وجود زبان های شی گرا که قابلیت های زیاد را در اختیار توسعه دهندگان قرار می دهد روش های مختلفی برای ارتباط با پایگاه داده های رابطه ای وجود دارد . با این وجود فقدان روشی مشخص و آسان برای اتصال به انواع پایگاه داده رابطه ای و به صورت کلی هر نوع منبع داده ای که به صورت شئی نیست  احساس می شود البته باید بگویم می شد .

شاید شما بگویید که ADO.NET می تواند با استفاده از مفهوم Dataset به این آرمان دست یابد اما برای تحقق آن می بایست که از یک شی DataAdapter استفاده کرد. یک شی DataAdapter چهار شی command را در خود پیاده سازی می کند که این اشیاء برای انجام عملیات Select ,Delete,Update و Insert بر روی پایگاه داده مورد استفاده قرار می گیرند ولی توجه داشته باشید که برای انجام این عمل شما می بایست این اشیاء را با عبارت SQL مناسب خود مقدار دهی کنید که برای انجام این عمل تا هنگام اجرای برنامه نمیتوانیم از صحت عبارت SQL خود اطمینان کسب کنید. این بدان معناست که عبارات SQL در زبان های دات نت بیگانه هستند و عبارت SQL مقدار دهی شده برای دات نت و برنامه نویس در تاریکی است ! و تا اجرا شدن عبارت SQL از صحت عبارت هیچ اطلاعی نداریم.

آموزش Linq

انواع LINQ عبارت است از :

  • LINQ to Objects
  • LINQ to XML(XLINQ)
  • LINQ to DataSet
  • LINQ to SQL (DLINQ)
  • LINQ to Entities

فرمت کتاب آموزش LINQ در سی شارپ : PDF
PDF آموزش LINQ در C# تعداد صفحات : ۱۰۳
حجم فایل آموزش LINQ در سی شارپ : ۱٫۹۱ مگابایت

دانلود PDF

آموزش linq در سی شارپ

آموزش طراحی سایت با ASP.NET مشهد

دوره آموزش طراحی سایت با ASP.NET مشهد

آموزش طراحی سایت مشهد (دوره آموزشی) : تکنولوژی ASP.NET ، یک تکنولوژی روز برای ساخت صفحات پویای وب است که بعد از ASP ، توسط شرکت مایکروسافت روانه بازار شده است . لازم است بدانید که این تکنولوژی ،  نسخه به روز شده ای از ASP  نیست و دارای ساختار جدیدی می باشد . تکنولوژی ASP.NET ، جزو مجموعه Microsoft.NET محسوب می شود که به عنوان ابزای قدرتمند ، در دست برنامه نویسان وب قرار گرفته است. تکنولوژی ASP.NET می تواند با داشتن زیر ساخت های مناسب ، صفحات پویا با درجه امنیت بالاتر و استحکام بیشتر ایجاد نماید. در دوره آموزش طراحی سایت مشهد سرفصل ها به گونه ایی طراحی شده است که شما گام به گام با این تکنولوژی آشنا شده و در نهایت به طراحی سایت مورد نظر خود بپردازید .

همچنین یکی از تفاوت های عمده بین تکنولوژی ASP.NET و سیار تکنولوژی ها ، این است که در این تکنولوژی ، کدها به جای تفسیر شدن ، مانند سایر نرم افزار های کاربردی .NET کامپایل می شوند. دراین حالت فایل های dll در یک فولدر موقت تشکیل شده و هنگام درخواست های بعدی از آنها استفاده خواهد شد.

از مزایای دیگر این زبان می توان به شئی گرا بودن آن اشاره کرد که اهمیت آن برای برنامه نویسان پوشیده نیست . پشتیبانی از گستره وسیعی از مرور گرها ، راحتی انجام تنظیمات و امکان توسعه سریع سایت و ب، از مزایای دیگر این زبان قدرتمند است . بعد از گذراندن دوره  آموزش طراحی سایت مشهد   شما خواهید توانست یک سایت ASP.NET  را با استفاده از این نرم افزار تولید کنید.

دوره آموزش طراحی وب مشهد

جهت ثبت نام و آشنایی بیشتر به  آموزش طراحی سایت مشهد مراجعه کنید.

آموزش طراحی سایت با ASP.NET

معرفی کنترل های اعتبار سنجی در ASP.NET

یکی از موضوعات جالب و کاربردی در ASP.NET کنترل های اعتبار سنجی هستندبه این دلیل که شما با استفاده از آنها می توانید مقادیر ورودی کاربر را محدود کرده و از ورود داده های نا معتبر جلوگیری کنید در این آموزش برنامه نویسی ASP.NET به بررسی این کنترل ها خواهیم پرداخت .

کنترل های اعتبار سنجی ASP.NET  دو روش اعتبار سنجی را فراهم میکنند: سمت سرور و یا سمت کاربر و با توجه به نیاز می توانیم یک یا هر ۲ این روش ها را انتخاب کنیم.

در جعبه ابزار ASP.NET  شش کنترل اعتبار سنجی به صورت پیش فرض وجود دارد.در صورتیکه به کنترل های بیشتری نیاز دارید می توانید ابزارهای AJAX ی را از این لینک دانلود کنید  CodePlexwebsite.

  • Required Field Validator
  • Compare Validator
  • Range Validator
  • Regular Expression Validator
  • Custom Validator
  • Validation Summary

جزئیات به همراه سینتکس:

Required Field Validator: بررسی می کند که کنترل دارای مقدار هست یا خیر.

<asp:RequiredFieldValidator ID="UrlPathRequired"   
runat="server" ControlToValidate="UrlPath"   
ErrorMessage="Please check URL">*</asp:RequiredFieldValidator>

Compare Validator: داده های ۲ کنترل را مقایسه می کند.

<asp:CompareValidator ID="CompareValidatorPassword" runat="server"  
ErrorMessage="Password do not match">  
</asp:CompareValidator>

Range Validator: بررسی می کندکه داده ها  در محدوده تعیین شده باشند.

<asp:RangeValidator ID="RangeValidatorAge" runat="server"  
ControlToValidate="txtAge" ErrorMessage="Enter your age (18 - 25)"   
MaximumValue="25" MinimumValue="18" Type="Integer">  
</asp:RangeValidator>

Regular Expression Validator: فرمت داده ورودی مانند ایمیل ، شماره تلفن و …را بررسی می کند

<asp:RegularExpressionValidator ID="URLPathExpressionValidator" runat="server"  
ControlToValidate="UrlPath" ErrorMessage="Invalid URL Path"  
ValidationExpression="string" ValidationGroup="string">Invalid URL  
</asp:RegularExpressionValidator>

Custom Validator: با این کنترل می توان یک آیتم ورودی را هم سمت کاربر و هم سمت سرور اعتبار سنجی کرد.

<asp:CustomValidator ID="URLPathCustomValidator" runat="server"  
ErrorMessage="URL Path exists" ControlToValidate="UrlPath"   
OnServerValidate="UrlPathCustomValidator_ServerValidate">  
URL is already used by another application or folder  
</asp:CustomValidator>

Validation Summary: هیچ اعتبار سنجی انجام نمی دهد تنها خلاصه ای از خطاهای اعتبار سنجی انجام شده را به کابر نمایش می دهد.

<asp:ValidationSummary ID="ValidationSummaryForm" runat="server"  
DisplayMode = "BulletList" ShowSummary = "true"   
HeaderText="Form contains below Errors:" />

امیدوارم این مطلب از سری آموزش برنامه نویسی ASP.NET مفید بوده باشد.

آموزش برنامه نویسی asp

مدیریت حالت در ASP.NET – آموزش گام به گام طراحی سایت با ASP NET

ASP.NET State Managemet

آموزش گام به گام طراحی سایت با ASP NET : هر بار که یک صفحه وب به سمت سرور ارسال می شود یک نمونه از کلاس آن صفحه ساخته می شود. در برنامه نویسی وب سنتی این کار به این معنی بود که تمام اطلاعات مربوط به آن صفحه و کنترل های بر روی آن در یک رفت و برگشت به سرور (round trip) از بین خواهد رفت. به عنوان مثال اگر کاربر اطلاعاتی را در یک textbox وارد کند، آن اطلاعات در یک رفت و برگشت از طرف مرورگر یا مشتری (client) به سمت سرور از دست خواهد رفت. در متن زیر به بررسی مدیریت حالت در ASP.NET برای رفع این مشکل خواهیم پرداخت.

آموزش گام به گام طراحی سایت با asp net

برای جلوگیری از این محدودیت که در برنامه نویسی وب سنتی وجود داشت، ASP.NET راه کارهای مختلفی را ارائه می دهد که باعث محافظت از داده می شود. این ویژگی ها عبارتند از:

  • View State
  • Control State
  • Hidden Fields
  • Cookies
  • Query Strings
  • Application State
  • Session State
  • Profile properties

در view state، control state، hidden fields،cookies و query strings  داده در سمت client به شیوه های مختلف ذخیره می شود، در حالیکه در application state، session state و profile properties داده در حافظه های موجود در سرور ذخیره می شود. هر کدام از دو روش نقاط قوت و ضعف خاص خود را دارند.

آموزش گام به گام طراحی سایت با ASP NET :

روش های مدیریتی مبتنی بر مشتری:(Client-based)

بخش های بعد در مورد راهکارهای مدیریت حالت که در آن اطلاعات داخل page در کامپیوتر client ذخیره می شود توضیح می دهد. هیچ اطلاعاتی در بین round trip ها در سرور ذخیره نمی شود.

view state

view state یک دیکشنری از اشیا برای نگه داری از داده های مهم هر page فراهم می کند. این روش، روش پیش فرض است که هر page برای نگه داری اطلاعات و ویژگی های کنترلی خود مابین رفت و برگشت ها استفاده می کند.

وقتی یک page پردازش می شود حالت فعلی page و کنترل های آن با یک رشته hash می شود و اگر میزان اندازه داده در view state بیش تر از مقدار معین شده که در ویژگی  MaxPageStateFieldLength قرار دارد باشد، به صورت یک فیلد پنهان در داخل page ذخیره می شود. وقتی که page دوباره به سمت سرور ارسال می شود رشته view state را هنگام بارگذاری، تجزیه (parse) می کند و اطلاعات در داخل آن باقی می ماند.

Control state  

گاهی اوقات نیاز دارید برای درست کار کردن کنترل ها، داده های مربوط به حالت کنترل (control state) را ذخیره کنید. به عنوان مثال اگر کنترلی بنویسید که شامل tabهای مختلفی باشد و هر  tab اطلاعات مختلفی را نشان می دهد، برای اینکه کنترل ها به درستی کار کنند هر کنترل باید بداند که کدام tab در هر round trip انتخاب می شود. view state  می تواند برای این منظور انتخاب شود اما می تواند توسط توسعه دهندگان در سطح page غیرفعال شود و منجر به عدم کنترل گردد. برای حل این مشکل فریم ورک ASP.NET ویژگی به نام control state را معرفی کرد که موجب می شود اطلاعاتی که منحصرا مربوط به کنترل هستند نگه داری شوند و نتوان مانند view state آن را غیرفعال کرد.

Hidden Fields

ASP.NET به شما اجازه می دهد تا اطلاعات را در داخل Hidden Fields یا فیلدهای پنهان ذخیره کنید. یک فیلد پنهان به طور آشکار در صفحه مرورگر render نمی شود اما می توانید ویژگی های آن را به صورت دلخواه مانند کنترل استاندارد تنظیم کنید. وقتیکه یک page در سرور ثبت می شود محتوای فیلد پنهان آن در یک فرم HTTP همراه با سایر کنترل ها ارسال می شود. فیلد پنهان مانند یک مخزن (repository) برای هر اطلاعاتی که ذخیره می کنید عمل می کند.

یادداشت امنیتی در آموزش گام به گام طراحی سایت با ASP NET :

 

برای هر کاربر دشمن دیدن و تغییر دادن محتوای فیلدهای پنهان ساده و راحت است. اطلاعاتی که حساسیت بالایی دارند یا درست کار کردن سیستم وابسته به آنها است را در داخل فیلدهای پنهان قرار ندهید.

کنترل Hidden Fields یک متغیر را در ویژگی به نام value ذخیره می کند و باید به طور صریح به page اضافه شود. برای اینکه مقادیر فیلد پنهان هنگام پردازش page قابل دسترس باشند باید با فرمان HTTP POST  آن page را ثبت کنید. اگر از فیلدهای پنهان استفاده می کنید و page با فرمان HTTP GET ثبت شده است، فیلدهای پنهان در دسترس نخواهند بود

آموزش گام به گام طراحی سایت با ASP NET :

Cookies

Cookie حجم کمی از داده است که به صورت که به صورت یک فایل متنی در سیستم فایل client یا در مرورگر client ذخیره می شود. Cookie شامل اطلاعات مختص به سایت است که سرور آنها را همراه خروجی های page به سمت client ارسال می کند.cookie  ها می توانند موقت(با تاریخ و زمان انقضای معین) یا دائمی باشند.

شما می توانید از cookie برای ذخیره اطلاعات درباره ی یک client ، session یا application استفاده کنید. cookie ها در دستگاه client ذخیره می شوند و زمانی که مرور گر یک page را درخواست می دهد client اطلاعات داخل cookie را همراه اطلاعات در خواستی می فرستد. سرور می تواند cookie را بخواند و مقادیر آن را استخراج کند.
یک استفاده رایج می تواند ذخیره یک token باشد که نشان می دهد کاربر قبلا در برنامه احراز هویت شده است.

یادداشت امنیتی
مرورگر فقط می تواند داده ای را به سرور ارسال کند که سازنده cookie است. کاربران دشمن می توانند راه هایی برای دسترسی به cookie ها و خواندن محتوای آنها پیدا کنند.توصیه می شود که اطلاعات مهم مثل نام کاربری یا پسورد را در cookies ذخیره نکنید. جای آن token را در cookie ذخیره کنید که کاربر را شناسایی می کند و از token برای پیدا کردن اطلاعات مهم درسرور استفاده می کند.

Query Strings
رشته Query اطلاعاتی است که به انتهای page URL اضافه می شود.یک رشته query می توانند مانند مثال زیر باشد
http://www.contoso.com/listwidgets.aspx?category=basic & price=100
در مسیر URL بالا رشته query با علامت سوال شروع می شود و شامل ۲ جفت به صورت attribute/value است.که یکی از انها “category” و دیگری “price” نام دارد. رشته query یک راه ساده اما محدود را برای ذخیره اطلاعات فراهم می کند. به عنوان مثال راه ساده ای برای ارسال اطلاعات از یک page به page دیگر وجود دارد مانند ارسال یک شماره محصول (product number) از یک page به page دیگری که از آنجا پردازش خواهد شد.با این حال بعضی از مرورگر ها و سیستم های client یک محدوده ۲۰۸۳ کاراکتری برای طول URL در نظر می گیرند.

یادداشت امنیتی
اطلاعاتی که در رشته query ارسال می شوند می توانند توسط کاربران دشمن تحریف و دچار تغییر شوند. به رشته های query برای ارسال اطلاعات مهم و حساس اطمینان نکنید.همچنین کاربر می تواند یک URL را bookmark کند یا URL را برای کاربران دیگر ارسال کند.
برای اینکه مقدار رشته query در هنگام پردازش page در دسترس باشد page را باید با فرمان HTTP GET ثبت (submit) کنید. به همین علت زمانی که از فرمان HTTP POST برای پردازش page استفاده می کنید نمی توانید از فواید رشته query بهره ببرید.

روش های مدیریتی مبتنی بر سرور(server-based)
ASP.NET روش های متنوعی را برای نگه داری و ذخیره اطلاعات بر روی سرور به جای ذخیره آن ها بر روی سیستم client ارائه می دهد.با استفاده از روش های مدیریتی مبتنی بر سرور می توانید حجم اطلاعات ارسال شده به client را کاهش دهید اگرچه این کار نیازمند استفاده از منابع پر هزینه بر روی سرور است. بخش های بعدی ۳ روش مدیریتی مبتنی بر سرور را شرح می دهند:Application state و session state و profile properties.

Application State
ASP.NET به شما اجازه می دهد که مقادیر را با استفاده از application state که یک نمونه از کلاس HTTP Application State است برای هر برنامه وب فعال ذخیره کنید.application state یک مکانیزم عمومی ذخیره سازی است که توسط تمام pageها در برنامه وب قابل دسترسی است.بنابراین application state برای ذخیره سازی اطلاعاتی که بین رفت و برگشت های (round trip) سرور و مابین در خواست ها برای هر page باید نگه داری و ذخیره شوند مفید خواهد بود.
Application state در یک دیکشنری مقدار/کلید (key/value)_که زمان هر درخواست به URL ساخته می شود_ذخیره می گردد.شما می توانید اطلاعات مربوط به application خود را برای ذخیره شدن مابین هر درخواست به page به این ساختار اضافه کنید.
زمانی که شما اطلاعات مربوط به application خود را به application state اضافه می کنید سرور آنها را مدیریت می کند.

Session State
ASP.NET به شما اجازه می دهد که مقادیر را با استفاده از Session state که یک نمونه از کلاس Http Session state است برای هر برنامه فعال وب ذخیره کنید.
Session state مشابه application است به استثنا این که Session state به Session فعلی مرورگر محدود می شود. یعنی محدوده فعالیت آن، Session فعلی مرورگر است. وقتی کاربران مختلف از برنامه شما استفاده می کنند هر Session کاربر یک Session state متفاوت خواهد داشت. همچنین وقتی یک کاربر از برنامه شما خارج می شود و بعد دوباره به آن برمی گردد Session کاربر دومی Session state متفاوتی نسبت به اولی خواهد داشت.
Session state به صورت یک دیکشنری مقدار/کلید(key/value) برای ذخیره اطلاعات مربوط به Session_که باید مابین رفت و برگشت ها به سرور و مابین درخواست به page نگه داری شوند_ساخته می شود.
می توانید از Session state برای انجام کار های زیر استفاده کرد:
• برای شناسایی درخواست های مرورگر یا client به صورت انحصاری و نگاشت ان ها به نمونه های Session تنها و تکی بر روی سرور

• ذخیره داده مربوط به Session بر روی سرور برای استفاده از آن هنگام درخواست های چند گانه مرورگر یا client در session یکسان
• جهت افزایش رویداد های مدیریت session
وقتی اطلاعات مربوط به application را به session state اضافه می کنید سرور این شی را مدیریت می کند.بسته به اینکه کدام گزینه را در نظر می گیرید اطلاعات session بر روی cookie ها، بر روی server یا بر روی کامپیوتری که Microsoft SQL Server را اجرا می کند ذخیره شوند.

Profile properties
ASP.NET ویژگی به نام profile properties را فراهم می کند که اجازه ذخیره سازی داده های مربوط به کاربر را می دهد.این ویژگی مشابه session state است به جز اینکه داده ی profile زمانی که session کاربر به اتمام می رسد از بین نمی رود. ویژگی profile properties از یک پروفایل ASP.NET استفاده می کند و به صورت پایدار ذخیره می شود.پروفایل ASP.NET به شما اجازه می دهد تا به راحتی اطلاعات خود را مدیریت کنید بدون اینکه برای خود یک پایگاه داده (data base) بسازید و آن را ذخیره کنید.همچنین پروفایل با استفاده از یک API قوی که می توان از هر جای برنامه به آن دسترسی پیدا کرد اطلاعات کاربر را در دسترس قرار می دهد.
شما می توانید اشیا از هر نوع را در پروفایل ذخیره کنید.ویژگی پروفایل ASP.NET یک سیستم ذخیره سازی عمومی و کلی را فراهم می کند که به شما اجازه می دهد هر نوع داده را تعریف و ذخیره کنید.
برای استفاده از profile properties باید یک سرویس دهنده profile را پیکربندی کنید.ASP.NET شامل کلاس Sql profile provider است که به شما اجازه می دهد داده پروفایل را در یک پایگاه داده SQL ذخیره کنید.همچنین می توانید کلاس سرویس دهنده پروفایل خود را نیز بسازید که داده پروفایل را در یک فرمت دلخواه تغییر داده شده (custom) و در یک مکانیزم ذخیره سازی دلخواه مثل فایل XML یا یک وب سرویس(web service) ذخیره می کند.
چون داده ای که در profile properties قرار دارد در داخل حافظه برنامه (application memory) ذخیره شده است از طریق ریستارت کردن ( Internet Information Service (IIS حفظ و نگه داری می شود. ( آموزش گام به گام طراحی سایت با asp net )

نحوه ارسال ایمیل در ASP NET Core 1.0

ASP.NET Core 1.0 یک راه انداز برای فریم ورک ASP.NET است که قابلیت پشتیبانی از فریم ورک قدیمی NET. و فریم ورک جدیدتر NET. Core را دارد. ASP.Net Core و NET. Core هر دو برای کار با انواع platformها طراحی شده اند و نسبت به فریم ورک کامل NET. حجم کمتری دارد و سریع تر است. بسیاری از APIهای NET. خیلی شبیه به یک فریم ورک کامل NET. هستند و توسعه دهندگان آنها تلاش زیادی می کنند تا این APIها کارایی در حد یک فریم ورک کامل داشته باشند. اگرچه از عواقب توسعه یک فریم ورک کوچک نسبت به فریم ورک کامل این است که ممکن است بعضی از کتابخانه ها را از دست بدهیم. در این آموزش به نحوه ارسال ایمیل در ASP NET خواهیم پرداخت.

در یکی از پروژه هایی که محققان روی آن کار می کردند نیاز به ارسال ایمیل از طریق یک برنامه وب (web application) بود. در یک فریم ورک قدیمی می توان از کلاس SmtpClient از فضای نام system.net.mail استفاده کرد. اما در فریم ورک Net. Core این قابلیت هنوز فراهم نیست.

برای رفع این مشکل ابتدا به گوگل سر زدیم که ببینیم چه کس دیگری به این مشکل برخورد کرده است و چگونه این مشکل را رفع کرده است. اما هیچ راه حل مناسبی برای این موضوع پیدا نشده بود. بالاخره توسط سایت GitHub با کتابخانه  MailKit آشنا شدیم. این کتابخانه توسط فردی به نام Jeffery Stedfast توسعه یافته است و از آنجا که به تازگی برای کار با Net. Core آپدیت شده است، بهترین راه حل برای ما بود.

در این مطلب به شما آموزش می دهیم که چگونه این کار را با استفاده از دو سناریو انجام می هیم. ابتدا ارسال مستقیم ایمیل از طریق یک رلهSMTP (relay و دوم به واسطه امکان ذخیره ایمیل در یک پوشه SMTP. هر دو روش روش ساده و کارآمدی به حساب می آیند.

اضافه کردن MailKit به پروژه ارسال ایمیل در ASP NET

قدم اول اضافه کردن ارجاعات (reference) به پکیج NuGet است. حال بهتر است از فایل project.jason  برای راه اندازی نیازمندی ها استفاده کنیم. ابتدا باید کتابخانه MailKit را -که فعلا نسخه beta6-1.3.0 آن موجود است- به بخش نیازمندی ها (dependency)  در فایل project.jason  اضافه کنید.

در برنامه وب ASP.NET Core،  نیازمندی ها باید مثل شکل زیر باشند. ( ارسال ایمیل در asp net )


ارسال ایمیل در asp net

زمانیکه تغییرات را اعمال می کنید Virtual Storage باید یک restore از پکیج های ضروری NuGet را نگه داری کند.

ارسال ایمیل در ASP NET با سرور SMTP

در این قسمت ما حداقل کد لازم برای اینکه یک ایمیل را به وسیله سرور SMTP ارسال کنید نشان می دهیم. برای این کار فایل MessageServices.cs را در برنامه وب خود باز کنید. باید در ابتدای فایل از سه عبارت using استفاده کنیم.

;using MailKit.Net.Smtp

;using MimeKit

;using MailKit.Security

متد SendEmailAsynch می تواند مانند قطعه کد زیر باشد.

public async Task SendEmailAsync(string email, string subject, string message)
{
    var emailMessage = new MimeMessage();
 
    emailMessage.From.Add(new MailboxAddress("Joe Bloggs", "jbloggs@example.com"));
    emailMessage.To.Add(new MailboxAddress("", email));
    emailMessage.Subject = subject;
    emailMessage.Body = new TextPart("plain") { Text = message };
 
    using (var client = new SmtpClient())
    {
        client.LocalDomain = "some.domain.com";                
        await client.ConnectAsync("smtp.relay.uri", 25, SecureSocketOptions.None).ConfigureAwait(false);
        await client.SendAsync(emailMessage).ConfigureAwait(false);
        await client.DisconnectAsync(true).ConfigureAwait(false);
    }

ابتدا یک شی از کلاس MimeMessage می سازیم که در آن ایمیلی را که می خواهیم بفرستیم نمایش می دهد. سپس می توانیم بعضی از propertyهای آن را set کنیم.

کلاس MimeMessage یک لیست از آدرس ها در متد From و لیست دیگری از آدرس ها در متد To دارد که می توان آنها را با فرستنده ها و گیرنده های ایمیل متناظر کرد. برای این مثال ما برای هر کدام از این متدها یک کلاس MailboxAddress فراخوانی کرده ایم. تابع سازنده MailboxAddress نام و آدرس ایمیل برای ارسال mailbox را به عنوان پارامتر می گیرد. در این مثال متد To آدرس ایمیلی را (به عنوان آرگومان) می گیرد که توسط caller به تابع SendEmailAsync فرستاده شده است.

سپس به ایمیل مورد نظر موضوع ایمیل(subject) را اضافه می کنیم و بعد از آن بدنه ایمیل را می سازیم. راه های گوناگونی برای ساختن و تعریف کردن بدنه ایمیل وجود دارد اما ما در این قسمت از یک راهکار ساده برای ساخت قسمت بدنه ایمیل با استفاده از ارسال متن به متد SendEmailAsync بهره برده ایم.

آخرین مرحله فرستادن ایمیل است و برای این کار از کلاس SmtpClient استفاده می کنیم. توجه داشته باشید که این کلاس مربوط به پکیج system.net.mail نیست بلکه بخشی از کتابخانه MailKit است.

یک نمونه از SmtpClient ساختیم که توسط عبارت using قابل دسترس شده است. زمانیکه ایمیل را فرستادیم دیگر قصد نداریم ارتباطمان با سرور SMTP را باز نگه داریم.  می توانید در صورت نیاز یک Local Domain را به منظور ارتباط با سرور SMTP تنظیم (set) کنید. این کار موجب نمایش مبدا پیام می شود.

سپس به صورت آسنکرون یا ناهمگام به سرور SMTP متصل می شویم. متد ConnectAsync می تواند uri مربوط به سرور SMTP را (به عنوان آرگومان) بگیرد یا اینکه مثل کاری که ما اینجا انجام دادیم با یک پورت و یک SSL سربارگذاری (over load ) شود. در این مثال هنگامی که سرور SMTP را تست می کنیم SSL ضروری نیست بنابراین آن را به صورت صریح (explicit) مشخص می کنیم.

در نهایت پیام را به صورت آسنکرون می فرستیم و سپس ارتباط را قطع می کنیم. در این مرحله ایمیل باید از طریق سرور SMTP ارسال شده و به مقصد رسیده باشد.

ارسال ایمیل در ASP NET توسط پوشه SMTP (SMTP pickup folder(

  همانطور که گفته شد ممکن است به جای ارسال مستقیم ایمیل از یک سرور SMTP ،آن را در یک پوشه SMTP که بر روی یک وب سرور اجرا می شود ذخیره کرد. ممکن است راه بهتری هم وجود داشته باشد اما ما این کار را به صورت زیر انجام دادیم.

public async Task SendEmailAsync(string email, string subject, string message)
{
    var emailMessage = new MimeMessage();
 
    emailMessage.From.Add(new MailboxAddress("Joe Bloggs", "jbloggs@example.com"));
    emailMessage.To.Add(new MailboxAddress("", email));
    emailMessage.Subject = subject;
    emailMessage.Body = new TextPart("plain") { Text = message };
 
    using (StreamWriter data = System.IO.File.CreateText("c:\\smtppickup\\email.txt"))
    {
        emailMessage.WriteTo(data.BaseStream);
    }
}

تنها تفاوت این کد با کد قبلی این است که در این کد از SmtpClient استفاده نمی شود. به جای آن پس از ساخت شی به نام emailMessage یک شی از کلاس steamwriter تعریف می کنیم که یک فایل متنی (text) در یک دایرکتوری محلی تولید می کند. سپس از متد MimeMessage.WriteTo برای تولید یک فایل ایمیل RFC822 در دایرکتوری pickup استفاده می کنیم.

نتیجه

MailKit یک کتابخانه خوب است که بسیاری از نیازهای ما را در این مطلب پاسخ می دهد. شواهدی وجود دارد که نشان می دهد تیم Microsoft در حال کار کردن بر روی Smtpclient است برای اینکه بتواند ASP.NET Core را پشتیبانی کند.

ارسال ایمیل در mvc

نحوه استفاده از ASP NET Identity

در این فیلم آموزشی به نحوه استفاده از ASP NET Identity و به کارگیری این  سیستم مدیریت کاربران در پروژه های .Net خواهد پرداخت . همچنین نحوه سفارشی سازی Identity از دیگر مباحث این فیلم خواهد بود .

 

نحوه استفاده از asp net identity
قسمت ۱ :

قسمت ۲ :

غیر فعال کردن Cut، Copy و Paste در مرورگر با استفاده از Java Script

در اپلیکیشن های بانکی معمولا در بعضی اوقات نیاز است که کلیدهای Ctrl+C، Ctrl+x و Ctrl+v را غیرفعال کنیم. این موضوع به این معنی است که باید قابلیت های Cut،Copy و paste را در برنامه به دلیل مسائل امنیتی در مرورگر محدود کنیم. می توانیم با استفاده از Java Script به این مهم دست پیدا کنیم چون مرورگر فقط زبان Java Script را متوجه می شود.

در این مقاله در مورد چگونگی غیرفعال کردن Cut،Copy و   Paste با استفاده از Java Script و ASP.Net بحث می کنیم.  می توانید این  آموزش را با یک صفحه HTML نیز امتحان کنید. نرم افزار Visual Studio 2015 را اجرا کنید و از قسمت New گزینه Create Web Site را انتخاب کنید. محتویات پیش فرض در یک صفحه aspx. را مانند شکل زیر تغییر دهید.

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

 

<!DOCTYPE html>

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title>Disable Ctrl+x, Ctrl+c, and Ctrl+v</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

       <input type="text" id="text1" />

        <label>This is example for disabling the Cut, Copy, and Paste options using JavaScript</label>

 

        <script type="text/javascript">

   

    var message = "Due to security reasons, Right Click is not allowed.";

 

    function clickIE4() {

        if (event.button == 2) {

            alert(message);

            return false;

        }

    }

 

    function clickNS4(e) {

        if (document.layers || document.getElementById && !document.all) {

            if (e.which == 2 || e.which == 3) {

                alert(message);

                return false;

            }

        }

    }

    if (document.layers) {

        document.captureEvents(Event.MOUSEDOWN);

        document.onmousedown = clickNS4;

    }

    else if (document.all && !document.getElementById) {

        document.onmousedown = clickIE4;

    }

 

    document.oncontextmenu = new Function("alert(message);return false")

   

    //Disable Copy into HTML form using Javascript

    document.body.oncut=new Function("return false"); 

 

    //Disable Copy into HTML form using Javascript

    document.body.oncopy=new Function("return false");

 

    //Disable Paste into HTML form using Javascript 

    document.body.onpaste=new Function("return false");

 

</script>

    </div>

    </form>

</body>

</html>

همانطور که در کد بالا معلوم است کد جاوا اسکرپت را در تگ body اضافه کنید. در این مثال ما قابلیت های Cut، Copy و Paste را با استفاده از propertyهای document.body oncut، document.body oncopy و document.body onpaste غیرفعال می کنیم. صفحه پیش فرض در aspx. حاوی یک label به همراه متن و یک textbox است. برنامه را اجرا کنید و عملیات cut،copy و paste را در داخل label و  textbox با استفاده از کلیدهای Ctrl+x،Ctrl+c و Ctrl+v انجام دهید. خواهید دید که هیچکدام از این عملیات انجام نمی شود. اگر بر روی مرورگر راست کلیک کنید می بینید که یک پیغام warning نشان داده می شود: “Due to security reasons,Right Click is not allowed ” به دلایل امنیتی استفاده از راست کلیک مجاز نیست!

copy paste