ably ably برای هدایت شدن به سایت جدید اینجا کلیک کنید

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

آموزش برنامه نویسی وب، اندروید، ویندوز , اسکیوال و...
Tell: 0912 097 5516
| Email: Hello@EduOnline.ir

۱۸۵ مطلب با موضوع «Web Development Teams» ثبت شده است

تفاوت دستور Select با SelectMany در LINQ

بسم الله الرحمن الرحیم

تفاوت دستور Select  با SelectMany در LINQ

می توانید مقاله آموزش Linq به زبان فارسی را از این قسمت مشاهده کنید.

دو عملگر Select  و SelectMany عملگر های projection هستند. عملگر Select  برای انتخاب مقادیر از یک مجموعه است اما عملگر SelectMany برای انتخاب مقادیر یک مجموعه از مجموعه دیگر است.
اپراتور یا عملگر Select یک مقدار را به عنوان خروجی به شما می دهد در صورتی که SelectMany یک خروجی شامل مقادیری مرتبط به یکدیگر را به شما ارائه می دهد.
عملا، عملگر SelectMany یک IEnumerable<IEnumerable<T>>  در IEnumrable<T>  ایجاد می کند. اینطور می توان گفت که، یک لیست که خود این لیست هر عنصرش یک لیست است را از یک مجموعه ایجاد می کند.

ادامه مطلب...

بررسی تگهای HTML و CSS در مرورگرهای مختلف

بسم الله الرحمن الرحیم

طبیعتا هر مرورگریی قابلیت پشتیبانی از تمامی عنصرهای HTML و CSS را ندارد برای چک کردن یک تگ و بررسی مرورگرهایی که این تگ قابلیت پشتیبانی دارند می توانید به این آدرس مراجعه کنید.

Cross-Origin Resource Sharing

بسم الله الرحمن الرحیم

تمامی مرورگرها برای دسترسی به منابع از روش و استراتژی خاصی بهره می برند، بر اساس میزان استفاده از این منابع مرورگرها را رتبه بندی می کنند.

در این وب سایت می توانید مرورگرهای مختلف را که بررسی شده اند مشاهده کنید.

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

نمایش سایت برای مرورگرهای مختلف

بسم الله الرحمن الرحیم

Internet Explorer

بسیاری از افراد فکر می کنند باید سایت خود را به نحوی طراحی کنند که تمامی مرورگر ها حتی IE نیز بتواند آن را نمایش دهد.

قبل از ادامه دادن به این مقاله لطفا این لینک را مشاهده کنید.

همانظور که مشاهده کردید تنها 8 درصد کاربران از مرورگر IE استفاده می کنند. چرا باید زیبایی و کارایی یک سایت را برای 8 درصد از کاربران حذف

کرد.

ادامه مطلب...

روش های Cache کردن اطلاعات

بسم الله الرحمن الرحیم

همانطور که می دانید دیتابیس های زیاد و متفاوتی وجود دارد که شما می توانید بر اساس نیاز خود از هر یک در مواقع نیاز استفاده کنید.

امروز با یکی از دیتابیس های جدید ارائه شده برای افزایش سرعت در ذخیره سازی اطلاعات شما را آشنا خواهم کرد.

Redis

Redis یک دیتابیس جدید برای ذخیره سازی و Cache کردن اطلاعات با استفاده از key-value است. این روش در واقع یک Structure برای ذخیره اطلاعات است. Redis متن باز (Open Source)  است.
خیلی ساده می توانید از طریق لینک زیر نحوه کار با این دیتابیس را آموزش ببینید.

آموزش Redis


در صورتی که نیاز به آموزش بیشتر است، می توانید پیام دهید تا انشالله آموزش آن را آماده کنم.

ساخت Scroll Top

بسم الله الرحمن الرحیم

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

در این آموزش می خواهیم کد این دکمه را در jQuery  بنویسیم.

یک صفحه HTML ایجاد کنید و کد jQuery را به صفحه خود اضافه کنید.

jquery-1.8.0.min.js

سپس یک فایل js ایجاد کنید و کد زیر را در آن قرار دهید.

  $.fn.scrollView = function () {
    return this.each(function () {
      $('html, body').animate({
        scrollTop: $(this).offset().top
      }, 1000);
    });
  }

با استفاده از این کد ما ظرف مدت زمان یک ثانیه از محلی که بر روی لینک کلیک می کنیم به ابتدای صفحه انتقال پیدا می کنیم.

کد زیر را نیز در همین فایل قرار دهید.

$('#scroll-link').click(function (event) {
  event.preventDefault();
  $('#header').scrollView();
});

header ای دی element ای است که در ابتدای صفحه قرار می دهیم و می خواهیم پس از کلیک بر روی scroll-link به آن جا انتقال پیدا کنیم

حال این فایل را نیز به صفحه خود اضافه کنید.

در بالای صفحه یک div با  id منحصر به فردی ایجاد کنید تا هنگامی که ما بر روی لینک پایین صفحه کلیک می کنیم به این div لینک شود.

<div id="header"></div>

در پایین صفحه یک تگ a به صورت زیر اضافه کنید

<a href="#" id="scroll-link">TOP</a>

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

کد این آموزش را می توانید از این جا دانلود کنید.

پسورد فایل

EduOnline.ir

دانلود jQuery Scroll bar
حجم: 32.7 کیلوبایت

نحوه بدست آوردن تمامی Action و Controller های یک پروژه MVC

بسم الله الرحمن الرحیم

ممکن است شما بخواهید در یک پروژه MVC لیست تمامی کنترلر ها و اکشن های پروژه خود بدست آورید.

در اینجا یک Extension متد نوشته ام که می توانید به سادگی لیست تمامی کنتترلرهای برنامه خود را بدست اورید:

اگر با متدهای توسعه یا همان Extension متد آشنایی ندارید، این مطلب را بخوانید

     public static List<string> GetControllerNames(this System.Web.Mvc.Controller controller)
        {
           try
            {


            List<string> controllerNames = new List<string>();
            GetSubClasses<System.Web.Mvc.Controller>().ForEach(
                type => controllerNames.Add(type.Name));
            return controllerNames;
              }
           catch (Exception exception)
           {
               throw new Exception(exception.Message);
           }
        }

برای استفاده از این کنترلر کافی است به صورت زیر عمل کتید

List<string> listController = Controller.GetControllerNames();

ممکن است بخواهید لیست اکشن های یک کنترلر را نیز بدست آورید برای این کار نیز یک متد دیگر نوشته ام که اینکار را برای شما انجام می دهد

 public static List<string> ActionNames(string controllerName)
        {
            try
            {

            var types =
                from assemblies in AppDomain.CurrentDomain.GetAssemblies()
                from assembliesTypes in assemblies.GetTypes()
                where typeof(System.Web.Mvc.IController).IsAssignableFrom(assembliesTypes) &&
                        string.Equals(controllerName + "Controller", assembliesTypes.Name, StringComparison.OrdinalIgnoreCase)
                select assembliesTypes;

            var controllerType = types.FirstOrDefault();

            if (controllerType == null)
            {
                return Enumerable.Empty<string>().ToList();
            }
            return new System.Web.Mvc.ReflectedControllerDescriptor(controllerType)
                .GetCanonicalActions().Select(x => x.ActionName)
                .ToList();
      }
            catch (Exception exception)
            {
                throw new Exception(exception.Message);
            }
        }

برای استفاده از این متد باید به صورت زیر عمل کنید:

List<string> listAction = ActionNames("AccountController");

انشالله که مفید واقع شود.

بدست آوردن تمامی کلاس های یک namespace

بسم الله الرحمن الرحیم

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

using System.Reflection;
private Type[] GetTypesInNamespace(Assembly assembly, string nameSpace)
{
    return assembly.GetTypes().Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal)).ToArray();
}

برای استفاده باید به صورت زیر عمل کنید

Type[] typelist = GetTypesInNamespace(Assembly.GetExecutingAssembly(), "MyNamespace");
for (int i = 0; i < typelist.Length; i++)
{
    Console.WriteLine(typelist[i].Name);
}

آموزش Asp.net Identity

بسم الله الرحمن الرحیم

آموزش Authentication در MVC

آموزش Asp.net Membership

آموزش ASP.NET Identity

آموزش 2 ASP.NET Identity

آموزش 3 ASP.NET Identity

در بخش های قبلی کار با Asp.net Identity را بررسی کردیم.

خوب بدون هیچ وقفه ای به سراغ مبحث اصلی این مقاله می رویم، اگر خاطرتان باشد، گفتیم برای ذخیره اطلاعات در Asp.net Identity می توانیم از روش Cookie استفاده کنیم.

حال فکر کنید شما می خواهید اطلاعات کلاس یا همان Model کاربر خود را در Cookie ذخیره کنید. با توجه به این که Cookie فقط اجازه ذخیره کردن اشیاء Serialize را می دهد شما نمی توانید به صورت زیر عمل کنید:

User user = // function to get user
HttpCookie cookie = new HttpCookie();
cookie.Value = user;

البته در Asp.net Identity ما به این صورت cookie.Value = user اطلاعات را ذخیره نمی کنیم. اما تفاوتی نخواهد داشت.

مشکلی که اینجا مشترک است این است که کوکی نمی تواند اطلاعات یک کلاس یا Model را ذخیره کند.

راه حل:

کلاس زیر را در نظر بگیرید

    public class clsAdmin
    {
    private string _name;

    public string Name
    {
    get { return _name; }

    set { _name = value; }
    }

    private int _id;

    public int AdminId
    {
    get { return _id; }
    set { _id = value; }
    }
    }

ادامه مطلب...

آموزش serialize کردن اشیا

بسم الله الرحمن الرحیم

 

ممکن است شما بخواهید یک شی از کلاس را در یک XML فایل ذخیره کنید، برای این کار می بایست شی خود را serialize کنید.

در این آموزش نحوه serialize را بررسی خواهیم کرد.

 

یک پروژه جدید از نوع windows Application  ایجاد کنید.

یک کلاس با نام MyClass به پروژه اضافه کنید و کد آن را به صورت زیر تغییر دهید:

public class MyClass

{

    // old school property

    private int _Age;  

    public int Age  

    {

        get { return _Age; }

        set { _Age = value; }

    }

 

    // new school property

    public bool Citizen { get; set; }

 

    // there's nothing wrong with using fields

    public string Name;  

}

ادامه مطلب...

serialize کردن به وسیله سی شارپ

بسم الله الرحمن الرحیم



در بسیاری از مواقع شما نیاز دارید یک شی را به صورت serialize ذخیره کنید، مثلا ذخیره کردن یک شی از کلاس user در کوکی و یا ذخیره کردن آن در ASP.NET Identity Claims و...
در این آموزش نحوه serialize را بررسی خواهیم کرد.

یک پروژه جدید از نوع Console Application  ایجاد کنید.
یک کلاس با نام clsPerson به پروژه اضافه کنید.
Property های زیر را به کلاس اضافه کنید

public   string FirstName;
public   string MI;
public   string LastName;

درون متد main کلاس Program.cs یک شی از کلاس clsPerson ایجاد کنید:

clsPerson p = new clsPerson();

Property های کلاس را مقدار دهی کنید

p.FirstName = "Esmaeil";
p.MI = "A";
p.LastName = "Sheidaei";

کلاس XmlSerializer برای ایجاد یک شی جدید نیاز دارد نوع شی ایی را که شما می خواهید به serialize تبدیل کنید بداند به همین دلیل ما در زمان ایجاد شی از کلاس XmlSerializer نوع p  را به آن اطلاع می دهیم که طبیعتا نوع شی ما در این جا clsPerson است.

ادامه مطلب...

افزایش سرعت Insert کردن رکورد ها در MVC

بسم الله الرحمن الرحیم





در این آموزش می خواهیم با روش جدید Insert کردن رکوردهایی با تعداد بالا به وسیله MVC آشنا کنیم و همچنین نحوه افزایش سرعت Insert کردن را فرا بگیریم.


EntityFramework.BulkInsert


یک extension برای Entity framework 4 به بالا است که سرعت Insert کردن شما در insert های عظیم تا 20 برابر افزایش می دهد.
این extension از روش Code First و Database First پشتیبانی می کند.

Entity Framework

ادامه مطلب...

اضافه کردن متد به LINQ

بسم الله الرحمن الرحیم

 

می خواهیم به تمامی لیست هایی که از نوع double ایجاد می شوند یک متد برای پیدا کردن عنصر میانی آنها بنویسیم

 

public static class LINQExtension
{
    public static double Median(this IEnumerable<double> source)
    {
        if (source.Count() == 0)
        {
            throw new InvalidOperationException("Cannot compute median for an empty set.");
        }

        var sortedList = from number in source
                         orderby number
                         select number;

        int itemIndex = (int)sortedList.Count() / 2;

        if (sortedList.Count() % 2 == 0)
        {
            // Even number of items.
            return (sortedList.ElementAt(itemIndex) + sortedList.ElementAt(itemIndex - 1)) / 2;
        }
        else
        {
            // Odd number of items.
            return sortedList.ElementAt(itemIndex);
        }
    }
}

 

ادامه مطلب...

Linq extension method

بسم الله الرحمن الرحیم

می خواهیم یک Extesion Method مانند متدهای Linq برای Model ایی خاص بنویسیم.

دو نکته را برای نوشتم متدهای توسعه (Extension Method) باید رعایت کنید:

1- متد را باید در کلاسی بنویسید که از نوع static باشد

2- namespace شما باید با namespace کلاسی که می خواهید برای آن Extension Method بنویسید یکسان باشد

ما می خواهیم وقتی از شی DbContext مدل Active  را انتخاب می کنیم مانند متد ()FirstOrDefault لینک (LINQ) یک متد برای اجرای یک دستور خاص نمایش داده شود:

public static class Extensions
{
    public IQueryable<T> Active<T>(this IQueryable<T> source)
        where T : YourEntityType
    {
        return source.Where(a => ((a.publishEnd > DateTime.Now) || (a.publishEnd == null))
                          && ((a.publishStart <= DateTime.Now) || (a.publishStart == null))
                          && a.active == true);
    }
}

برای فراخوانی متد به صورت زیر می توانیم عمل کنیم:

var item = db.myTable.Active().SingleOrDefault(...);

آموزش ASP.NET Identity

بسم الله الرحمن الرحیم

 

آموزش Authentication در MVC

آموزش Asp.net Membership

آموزش ASP.NET Identity

آموزش 2 ASP.NET Identity

آموزش 3 ASP.NET Identity

معرفی ASP.NET Identity

در سال 2005 مایکروسافت ASP.NET Membership را معرفی کرد تا نیازهایی که تمامی برنامه نویسان برای احراز هویت و تعیین سطوح دسترسی کاربران داشتند را برطرف نماید.

در ابتدا سیستم ASP.NET Membership بسیاری از نیازهای برنامه نویسان را برطرف می نمود از جمله: ثبت نام، فراموشی کلمه عبور و تعیین گروه کاربر (هر کاربر می توانست در گروهایی همچون، Admin و سایر گروه هایی که شما تعریف می کردید قرار بگیرد) و... در نهایت این سیستم بسیار کمک بزرگی به برنامه نویسان کرد.

اما با گذشت زمان و تغییر و افزایش نیاز برنامه نویسان، سیستم ASP.NET Membership مشخص شد که دیگر پاسخگوی نیاز برنامه نویسان نیست بنابراین مایکروسافت سیستم جدیدی را با نام ASP.NET Identity را معرفی کرد که بسیار قدرتمندتر از سیستم ASP.NET Membership بود و همچنین امکانات جدیدی به آن اضافه شده بود ازجمله احراز هویت بر اساس سرویس های سایر سایتها و شبکه های اجتماعی مانند facebook, Google,.. و احراز هویت بر اساس سیستم های ارسال پیامک و امکانات دیگر که هر یک به نوبه خود جدید و بسیار مفید خواهند بود.

 

ادامه مطلب...

آموزش Asp.net Identity

بسم الله الرحمن الرحیم


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

آموزش Authentication در MVC

آموزش Asp.net Membership

آموزش ASP.NET Identity

آموزش 2 ASP.NET Identity

آموزش 3 ASP.NET Identity

در آموزش قبلی شما با فرایند کار ASP.NET Identity آشنا شدید در این مقاله شما نحوه خواندن و بررسی اطلاعات کاربر را با استفاده از SQL Server آموزش خواهید دید.

Storing user information in a database
برای ذخیره اطلاعات در دیتابیس به وسیله ASP.NET Identity ما باید Package زیر را نصب کنیم:

Install-Package Microsoft.AspNet.Identity.EntityFramework

این Package برای ارتباط ما با SQL Server است که به وسیله آن می توانیم اطلاعات خود را دردیتابیس ذخیره کنیم و سپس اطلاعات خود را نیز از دیتابیس بخوانیم.


ایجاد کلاس برای نمایش اطلاعات کاربر

ASP.NET Identity به سادگی به شما اجازه می دهد که اطلاعات اضافی را برای کاربر خود ذخیره کنید. شما برای این کار باید از کلاس IdentityUser استفاده کنید و سپس Property های مورد نیاز خود را برای ثبت اطلاعات بیشتر برای هر کاربر تعریف کنید.
در این مثال ما علاوه بر اطلاعات کاربری فیلد country را نیاز داریم به همین دلیل این فیلد را به صورت زیر اضافه می کنیم:

public class AppUser : IdentityUser
{
    public string Country { get; set; }
}

ادامه مطلب...

آموزش ساخت Connection String

بسم الله الرحمن الرحیم

یک راه ساده برای ایجاد و تست Connection String امروز فرا خواهید گرفت.

برای شروع کافی است در دسکتاپ خود کلیک راست کنید و گزینه new را انتخاب و سپس یک فایل Text Document ایجاد کنید حال پسوند فایل ایجاد شده را به UDL تغییر دهید (یادتان باشد باید پسوند فایلها را ابتدا از طریق Control Panel -> Folder Options -> View گزینه Hide extensions for known file type را غیر فعال کنید ). حال بر روی فایل دابل کلیک کنید تا باز شود و به ترتیب می توانید مشخصات نام سرور خود، نام کاربری و کلمه عبور سرور خود و در نهایت انتخاب پایگاه داده خود را انجام دهید.

در نهایت پس از تکمیل اطلاعات بر روی گزینه Test Connection  کلیک کنید تا مطمن شوید یک کانکشن صحیح ایجاد شده است.

برای استفاده از Connection String تولید شده می توانید بر روی فایل کلیک راست کنید و آن را دریک برنامه مثل Notepad باز کنید و از اطلاعات آن استفاده کنید.

آموزش Authentication در MVC

بسم الله الرحمن الرحیم

آموزش Authentication در MVC

آموزش Asp.net Membership

آموزش ASP.NET Identity

آموزش 2 ASP.NET Identity

آموزش 3 ASP.NET Identity

در بعضی مواقع ممکن است شما از نوع پیش فرض authentication نمی خواهید استفاده می کنید و دوست دارید یک احراز هویت اختصاصی برای خود داشته باشید. هر کاربر شما یک کاربر منحصر به فرد خواهد بود که مجموعه ای از سطوح دسترسی را برای دسترسی به بخش های مختلف وب سایت شما خواهد داشت. وقتی که کاربر شما تایید شود می تواند وابسته به Role هایی که دارد از منابع مختلف استفاده کند.

Asp.net Identity

ASP.NET به وسیله دو interface به نام های، IPrincipal and IIdentity سطوح دسترسی و identity و Role را برای هر کاربر ارائه می دهد. شما می توانید یک سطح دسترسی اختصاصی برای خود به وسیله اینترفیس های IPrincipal and IIdentity، که در HttpContext باند شده اند ایجاد نمایید.


public class CustomPrincipal : IPrincipal
{
public IIdentity Identity { get; private set; }
public bool IsInRole(string role)
{
if (roles.Any(r => role.Contains(r)))
{
return true;
}
else
{
return false;
}
}

public CustomPrincipal(string Username)
{
this.Identity = new GenericIdentity(Username);
}

public int UserId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string[] roles { get; set; }
}

ادامه مطلب...

خطا Validation failed for one or more entities

بسم الله الرحمن الرحیم

طبیعتا تاکنون در حین اجرای پروژه با خطای زیر برخورد کردید:

Validation failed for one or more entities. See 'EntityValidationErrors' property for more details. Description: 
An unhandled exception occurred during the execution of the current web request.
Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.Entity.Validation.DbEntityValidationException:
Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.

هر یک از شما دوستان ممکن است راه حل های زیادی برای حل این مشکل داشته باشید.

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

ادامه مطلب...

خطا Cannot insert the value NULL into column

بسم الله الرحمن الرحیم

خطای زیر را مشاهده کنید:

Cannot insert the value NULL into column 'FirstLastName', table 'RequestSessions'; column does not allow nulls. INSERT fails.The statement has been terminated. 

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

  مثلا

Account.FirstLastName=”Esmaeil”;
up
ما را در گوگل محبوب کنید