آموزش نصب SQL SERVER

خیلی از افراد در نصب برنامه SQL SERVER از جمله SQL SERVER 2008 R2 مشکل دارند
براتون آموزش تصویری فارسی نصب SQL SERVER را می گذارم تا مشکلتان برطرف شود









آموزش SQL SERVER 2012

متن نویسه...

ایجاد پایگاه داده

برای ایجاد پایگاه داده از فرمول زیر استفاده کنید:

CREATE DATABASE BethesdaCarRental;

اگر می خواهید نام پایگاه داده بصورت کلمات مختلف باشد آن کلمات را بصورت زیر در براکت می گذاریم:

CREATE DATABASE [Bethesda Car Rental];

برای شروع از یک نمونه کد پنجره پرس و جو Query را باز کرده سپس از منوی view  پنجره Template Explorer را باز می کنیم و قسمت Database را گسترش Expand می دهیم و قسمت Create Database را در پنجره query , drag می کنیم

-- =============================================
-- Create database template
-- =============================================
USE master
GO
 
-- Drop the database if it already exists
IF  EXISTS (
        SELECT name 
               FROM sys.databases 
               WHERE name = N'<Database_Name, sysname, Database_Name>'
)
 
CREATE DATABASE <Database_Name, sysname, Database_Name>
GO

تا به طور عینی برای ایجاد یک database  , Microsoft SQL Server Management Studio  را باز می کنیم در پنجره Object Explorer قسمت نام سرور را expand می کنیم تا به نود Database برسیم سپس روی Databases کلیک راست کرده و کلیک New Database را می کنیم




در جعبه متن نام، نام مورد نظر از پایگاه داده را وارد کنید به عنوان مثال



سپس خواص دیگر از پایگاه داده جدید را مشخص کنید:


پاک کردن یک پایگاه داده


برای پاک کردن یا ویرایش یک پایگاه داده، شما از دستور DROP DATABASE به اضافه نام پایگاه داده استفاده کنید فرمول آن در زیر گفته شده است

DROP DATABASE DatabaseName;

مثال:

DROP DATABASE DatabaseName;

برای شروع از یک نمونه کد پنجره پرس و جو Query را باز کرده سپس از منوی view  پنجره Template Explorer را باز می کنیم و قسمت Database را گسترش Expand می دهیم . نودDrop Database  را به پنجره پرس و جو می اندازیم) Drag & (Drop  .

- =========================
-- Drop Database Template
-- =========================
USE master
GO
 
IF  EXISTS (
        SELECT name 
               FROM sys.databases 
               WHERE name = N'<Database_Name, sysname, Database_Name>'
)
DROP DATABASE <Database_Name, sysname, Database_Name>
GO

برای پاک کردن یا ویرایش یک پایگاه داده در SQL Server Management Studio در پنجره Object Explorer قسمت نام سرور را expand می کنیم تا به نود Database برسیم سپس روی Databases کلیک راست کرده و و بر روی حذف delete کلیک کنید. یک کادر محاوره ای برایتان می آید که درخواستتان را می توانید تایید کنید.


اگر شما هنوز هم می خواهید به حذف پایگاه داده ادامه دهید، روی OK کلیک کنید. اگر خواستید ذهن خود را تغییر دهید، شما می توانید روی لغو کلیک کنید.

تغییر نام یک پایگاه داده

برای تغییر نام یک پایگاه داده Transact-SQL ، sp_renamedb را فراهم می کند

EXEC sp_renamedb 'ExistingName', 'NewName'

 

دستور EXEC sp_renamedb مورد نیاز است. ExistingName factor نام دیتابیسی هست که می خواهید تغییر دهید

فاکتور NewName نامی است که می خواهید پایگاه داده به آن  تغییر نام آن دهد.

مثال تغییر نام

EXEC sp_renamedb 'RentalCars', 'BethesdaCarRental

GO

لطفا برای یادگیری کامل SQL SERVER 2012 به لینک زیر رجوع کنید:

آموزش SQL SERVER

 

ایجاد جدول

برای ایجاد یک جدول، شما می توانید این فرمول را دنبال کنید:

CREATE TABLE Country(ستون1, ستون2, ستون3)

یا

CREATE TABLE Country(
ستون1,
ستون2,
ستون3);

هر ستون به عنوان ایجاد شده:

CREATE TABLE Customers (
        DrvLicNbr nvarchar(32), 
        DateIssued DATE,
        DateExpired date,
        FullName nvarchar(50),
        Address NVARCHAR(120),
        City NvarChar(40),
        State NVarChar(50),
        PostalCode nvarchar(20),
        HomePhone nvarchar(20),
        OrganDonor BIT);
GO

 

برای شروع از یک نمونه کد پنجره پرس و جو Query را باز کرده سپس از منوی view  پنجره Template Explorer را باز می کنیم

- =========================================
-- Create table template
-- =========================================
USE <database, sysname, AdventureWorks>
GO
 
IF OBJECT_ID('<schema_name, sysname, dbo>.<table_name, 
                                   sysname, sample_table>', 'U') 
         IS NOT NULL
  DROP TABLE <schema_name, sysname, dbo>.<table_name, sysname, sample_table>
GO
 
CREATE TABLE <schema_name, sysname, dbo>.<table_name, sysname, sample_table>
(
    <columns_in_primary_key, , c1> <column1_datatype, , int> 
         <column1_nullability,, NOT NULL>, 
    <column2_name, sysname, c2> <column2_datatype, , char(10)> 
         <column2_nullability,, NULL>, 
    <column3_name, sysname, c3> <column3_datatype, , datetime> 
         <column3_nullability,, NULL>, 
    CONSTRAINT <contraint_name, sysname, PK_sample_table> 
         PRIMARY KEY (<columns_in_primary_key, , c1>)
)
GO
 
بعد از آن شما می توانید این کدرا تغییر دهید یاسفارشی کنید

برای ایجاد  یک جدول در SQL Server Management Studio در پنجره Object Explorer قسمت نام سرور را expand می کنیم تا به نود Tables برسیم سپس روی Tables  کلیک راست کرده و New Table را کلیک کنید یک نام برای هر ستون و نوع داده های خود انتخاب کنید:

پاک کردن جدول

برای پاک کردن یا ویرایش یک جدول با استفاده از SQL، ازفرمول زیراستفاده کنید:

DROP TABLE نام جدول

مثال: DROP TABLE Students;

تغییر نام یک جدول

برای تغییر نام یک جدول از کد sp_rename استفاده کنید:

sp_rename ExistingTableName, TableNewName;

مثال

sp_rename 'StaffMembers', 'Employees';

کلیدهای اصلی Primary Keys

برای ایجاد یک ستون اصلی با استفاده از SQL، از کلید واژه کلید اصلی استفاده کنید. در اینجا به عنوان مثال:

CREATE TABLE Persons
(
    PersonID int identity(1,1) PRIMARY KEY NOT NULL,
    FirstName nvarchar(20),
    LastName nvarchar(20) NOT NULL
);

محدودیت کلید اصلی:

شما همچنین می توانید یک کلید اصلی به عنوان یک محدودیت ایجاد کنید.از فرمول زیر استفاده کنید:

CONSTRAINT PrimaryKeyName PRIMARY KEY(ColumnName)

به عنوان مثال

CREATE TABLE Persons
(
    PersonID int identity(1,1) NOT NULL,
    FirstName nvarchar(20),
    LastName nvarchar(20) NOT NULL,
    CONSTRAINT PrimKeyPeople PRIMARY KEY(PersonID)
);

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

USE Exercise2;
GO
 
CREATE TABLE Persons
(
    PersonID int identity(1,1) NOT NULL,
    FirstName nvarchar(20),
    LastName nvarchar(20) NOT NULL,
    CONSTRAINT PK_Persons PRIMARY KEY(PersonID)
);
GO

کلید خارجی

برای ایجاد یک کلید خارجی در SQL، فرمول زیر را استفاده می کنیم:

FOREIGN KEY REFERENCES ParentTableName(ForeignKeyCcolumn) 

بعنوان مثال

CREATE TABLE Persons
(
    PersonID int identity(1,1) PRIMARY KEY NOT NULL,
    FirstName nvarchar(20),
    LastName nvarchar(20) NOT NULL,
    GenderID int NULL FOREIGN KEY REFERENCES Genders(GenderID)
);

محدودیت بر روی یک کلید خارجی

برای ایجاد یک کلید خارجی به عنوان یک محدودیت، از کلید واژه CONSTRAINT استفاده کنید

CREATE TABLE Persons
(
    PersonID int identity(1,1) PRIMARY KEY NOT NULL,
    FirstName nvarchar(20),
    LastName nvarchar(20) NOT NULL,
    GenderID int NULL CONSTRAINT FKGenders
                       FOREIGN KEY REFERENCES Genders(GenderID)
);

اضافه کردن یک ستون به یک جدول

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

ALTER TABLE TableName
ADD ColumnName Properties

به عنوان مثال

ALTER TABLE StaffMembers
ADD Address varchar(100) NULL
GO

وقتی این کد اجرا می شود، ستون جدید به نام Address، از نوع VARCHAR، با محدودیت 100 کاراکتر(اجازه می دهد تا نوشته های خالی نیز وارد شود) به جدول StaffMembers اضافه می شود

برای شروع از یک نمونه کد پنجره پرس و جو Query را باز کرده سپس از منوی view  پنجره Template Explorer را باز می کنیم سپس نود Table را گسترش می دهیم.زیر جدول Add Column را به پنجره پرس و جو & drop drag کنید

بخش های ناخواسته از کد را حذف کرده و تنها بخشی از کدی که به اضافه کردن یک ستون می پردازد نگه دارید

مثال

--==========================================================================
-- Add column template
--
-- This template creates a table, then it adds a new column to the table.
--==========================================================================
USE <database, sysname, AdventureWorks>
GO
 
-- Add a new column to the table
ALTER TABLE <schema_name, sysname, dbo>.<table_name, sysname, sample_table>
        ADD <new_column_name, sysname, column3>
            <new_column_datatype,, datetime>
            <new_column_nullability,, NULL>
GO

 

ستون Identity

ستون Identity یک مقداری است که بصورت اتوماتیک به وسیله موتور جستجو وقتی یک رکورد جدید اضافه می شود خلق می شود. این باعث می شود اطمینان حاصل کنید که هر رکورد دارای ارزش های منحصر به فرد unique است که برای field می باشد.

برای ایجاد یک ستون  identity  ،جدول Design View را نمایش دهید در بخش بالا، نام ستون را مشخص کنید. نوع داده های خود را به یک نوع عدد صحیح ست کنید 

در قسمت پایین کلیک کنید و  Identity Specification property را گسترش دهیداولین اقدام شما باید انجام دهید این است که  property را از No به Yes تغییر دهید.هنگامی که مقدار property را به Yes ست کردید اولین بار که کاربر داده داخل می کند مقدار اولین رکورد به یک تنظیم می شود. این ویژگی هست که توسط خاصیت  Identity کنترل می شود. اگر شما می خواهید شمارش را به یک مقدار دیگر از 1 شروع کنید این property را مشخص کنید.

هنگامی که مقدار property (Is Identity) را به Yes ست کردید مترجم SQL مقدار هر رکورد جدید را 1 افزایش می دهد این به این معنی است که رکورد اول مقدار 1 داشته باشد، دومی مقدار 2 داشته باشد، و به همین ترتیب.

این بعد بوسیله Identity Increment property کنترل می شود. اگر شما می خواهید بیشتر از این افزایش دهید شما می توانید مقدار Identity Increment property را تغییر دهید . برای ایجاد یک ستون identity در Transact-SQL ، پس از نام و نوع داده از نوع ستون ،نوع identity بوسیله پرانتز دنبال می شود0 بین پرانتز داخل مقدار را به دنبال یک کاما وارد کنید و به دنبال آن مقدار افزایشی را واردکنید

مثال

CREATE TABLE StoreItems(
    ItemID int IDENTITY(1, 1) NOT NULL, 
    Category nvarchar(50),
    ItemName nvarchar(100) NOT NULL,
    Size nvarchar(20),
    UnitPrice money);
GO

 

 

 

پاک کردن یک ستون

برای حذف کردن یا ویرایش یک ستون با استفاده از کد، ابتدا پنجره خالی پرس و جو را باز کرده ، و از فرمول زیر استفاده کنید:

ALTER TABLE TableName
DROP COLUMN ColumnName

 

در سمت راست دستور ALTER TABLE، نوع نام جدول است. در سمت راست دستور DROP COLUMN، وارد کنید نام ستون ناخواسته را. در اینجا به عنوان مثال:

ALTER TABLE StaffMembers
DROP COLUMN CurrentResidence;
GO

 

وقتی این کد اجرا شد مترجم یک ستون بنام CurrentResidence در یک جدول بنام StaffMembers از پایگاه داده فعلی و یا انتخاب شده را نگاه می کند اگر آن ستون را پیدا کرد آن را از جدول حذف می کند

Microsoft SQL Server نیز می تواند نمونه کدی که  شما می توانید با استفاده از آن یک ستون از یک جدول را حذف کنید را تولید کند. قبل از انجام این کار، ابتدا یک پنجره پرس و جو خالی و Templates Explorer را نمایش دهید.نود Table را گسترش دهید. در قسمت جدول Drop Column را به پنجره query ، drag&drop کنید . بخش های ناخواسته از کد را حذف کنید و تنها بخشی که با اضافه کردن یک ستون نگه دارید. در اینجا به عنوان مثال:

 

--============================================

-- Drop column template

--

-- This template creates a table, then it 

-- drops one of the columns of the table.

--============================================

USE <database, sysname, AdventureWorks>

GO

 

-- Drop a column from the table

ALTER TABLE <schema_name, sysname, dbo>.<table_name, sysname, sample_table>

        DROP COLUMN <new_column_name, sysname, column3>

GO


 تغییر نام یک ستون

برای تغییر نام یک ستون، برای اولین بار یک ویرایشگر پرس و جو خالی باز کنید. در ویرایشگر پرس و جو، کد sp_rename  را اجرا کنیدو از فرمول زیر استفاده کنید:

sp_rename 'TableName.ColumnName', 'NewColumnName', 'COLUMN'

 

فاکتور sp_rename و رشته 'COLUMN' مورد نیاز است. فاکتور TableName نام جدول که ستون به آن تعلق دارد، است. ColumnName نام ستون کنونی است. NewColumnName نام مورد نظری که  شما می خواهید به ستون بدهید است.

به عنوان مثال

sp_rename 'StaffMembers.FullName', 'EmployeeName', 'COLUMN'
GO

وقتی این کد اجرا شده ، مترجم یک ستون FullName در جدول StaffMembers از پایگاه داده فعلی و یا انتخاب شده را نگاه می کند. اگر ستون از جدول را پیدا کند آن را به EmployeeName تغییر نام می دهد.

 

Transact-SQL Keywords

کلید واژه ALTER به منظور ایجاد تغییر در ساختار یک جدول مورد استفاده قرارمی گیرد این را می توان مورد استفاده قرار گیرد برای اضافه کردن یک ستون جدید به جدول موجود. از فرمول زیر استفاده کنید

ALTER TABLE TableName
ADD COLUMN ColumnName DataType

 

به عنوان مثال

USE Exercise;
GO
 
ALTER TABLE Employees ADD EmailAddress nvarchar(60);
GO

 

CREATE

کلمه CREATE برای ایجاد یک شی ایجاد می شود

Creating a Database: مثال ایجاد یک پایگاه داده

CREATE DATABASE NationalCensus;

 

 

 ادامه دارد:...


لطفا برای یادگیری کامل SQL SERVER 2012 به لینک زیر رجوع کنید:

آموزش SQL SERVER

 






كتابهاي آموزش ASP

براتون آدرس لينكو مي گذارم كه پر از كتابهاي آموزشي فارسي و انگليسي مربوط به ASP.NET هست.دانلود كنيد و لذت ببريد

لينك سايت: آموزش ASP







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

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





آموزشگاه تخصصی برنامه نویسی تحلیل گر داده
مجری دوره های تخصصی پیشرفته برنامه نویسی
کارگاه های آموزشی تخصصی برنامه نویسی
آموزش پروژه ای ، کاربردی ، عملی

آموزشگاه برنامه نويسي






اموزش AJAX

آموزش AJAX


قتی با Ajax یک برنامه می سازید، در واقع تجربه ای گرانبها در اختیار کاربرانتان می گذارید. می توان با استفاده از ویژگی های Ajax و کنترل هایserver-side در ASP.NET، از قبیل کنترل UpdatePanel، برای بهینه سازی server-based ASP.NET Web Forms applications استفاده کرد.

نکته: اگر می خواهید بدون استفاده از کنترل های سرور، Ajax client-side interactivity ایجاد کنید، از jQuery استفاده کنید. در Visual Studio، هنگامی که با استفاده از پراجکت تمپلیت ASP.NET Web Site ، پراجکت تمپلیت ASP.NET Web Application ، و پراجکت تمپلیت ASP.NET MVC 2 Web Application، پروژه ای را ایجاد می کنید، یک لایبرری jQuery در application ایجاد می شود. وقتی با jQuery، دولوپ می کنید، ویژوال استودیو، IntelliSense را، و Microsoft Content Delivery Network، نسخه ای قابل دانلود از لایبرری jQuery را برای نصبی کارآمد، در اختیار می گذارد.

این مقاله، روی بهبود server-based ASP.NET Web Forms applications تمرکز می کند.

چرا از ویژگی های Microsoft Ajax استفاده کنیم؟

Web Forms applicationهایی که از ویژگی های Ajax استفاده می کنند، دارای ویژگی های زیر هستند:

  • عنصرهای اینتراکتیو و آشنای UI، از قبیل progress indicators، tooltips، و پنجره pop-up
  • بازدهی بهبود یافته برای Web Forms application، زیرا قسمت های مهم پردازش صفحه وب را می توان در مرورگر انجام داد.
  • آپدیت های جزیی صفحه که فقط بخش هایی از صفحه وب را refresh می کنند که تغییر یافته اند.
  • client integration با سرویس های برنامه ASP.NET برای اعتبار سنجی فرم ها، سطح دسترسی، و پروفایل های کاربر.
  • کلاس های پروکسی، که بطور اتوماتیک generate میشوند، و متدهای فراخوانی web service را از اسکریپت کلاینت ساده می کنند.
  • قابلیت سفارشی کردن کنترل های سرویس جهت دربر گرفتن قابلیت های کلاینت.
  • ساپورت اکثر مرورگرهای معروف، از قبیل Internet Explorer، Mozilla Firefox، و Apple Safari.

معماری برنامه های Microsoft Ajax

یک برنامه Microsoft Ajax Web، یا از یک solution فقط کلاینت یا از یک solution کلاینت و سرور تشکیل شده است. یک solution فقط کلاینت، از لایبرری Microsoft Ajax استفاده می کند اما از هیچ کنترل سرور ASP.NET استفاده نمی کند. بعنوان مثال، HTML می تواند حاوی عناصر اسکریپت باشد که فایل های Microsoft Ajax Library .js را reference می کنند. لایبرری Microsoft Ajax به برنامه های Ajax اجازه می دهد کل پردازش را روی کلاینت اجرا کند. solution کلاینت و سرور شامل استفاده از هم Microsoft Ajax Library و هم کنترل های سرور ASP.NET است.

شکل زیر، عملکردی را نشان می دهد که در لایبرری های client-script و componentهای سروری که همراه .NET Framework 4 هستند، وجود دارند.

معماری سرور و کلاینت Microsoft Ajax

clip_image001

این شکل، عملکرد لایبرری کلاینت محور Microsoft Ajax را نشان می دهد، که شامل ساپورت ایجاد componentهای کلاینت، سازگاری با مرورگر، و سرویس های networking و هسته ای (Core) می باشد. همچنین این شکل عملکرد ویژگی های Microsoft Ajax سرور محور را نیز نشان می دهد، که شامل ساپورت اسکریپت، سرویس های وب، سرویس های application، و کنترل های سرور است. بخش های بعدی، شکل بالا را با جزییات بیشتر توضیح خواهند داد.

اموزش AJAX

معماری Microsoft Ajax Client

معماری کلاینت، شامل لایبریی هایی برای ساپورت کامپوننت، سازگاری با مرورگر، نتورکینگ، و سرویس های هسته ای است.

کامپوننت ها

کامپوننت های کلاینت، رفتارهای پیشرفته را در مرورگر، بدون postback، فعال می کنند. این کامپوننت ها به سه دسته تقسیم می شوند:

  • Componentها، که اشیای غیر visual هستند که کد را encapsulate می کنند.
  • Behaviorها، که رفتار عنصرهای DOM موجود را گسترش می دهند.
  • Controlها، که یک عنصر DOM جدید ارائه می کنند که دارای رفتار سفارشی است.

نوع کامپوننتی که شما استفاده می کنید، بستگی به نوع رفتار کلاینتی دارد که شما می خواهید. مثلاً، یک watermark برای text box موجود را می توان با استفاده از رفتاری که به text box الصاق می شود، ایجاد کرد.

سازگاری با مرورگر

لایه سازگاری با مرورگر، سازگاری با اکثر مرورگرهای معروف را برای Microsoft Ajax فراهم می کند. این، شما را قادر به نوشتن همان اسکریپ، بدون در نظر گرفتن اینکه کدام مرورگر هدف شماست، می کند.

نتورکینگ

لایه نتورکینگ، ارتباطات بین اسکرپت و سرویس های وب محور بر applicationها را مدیریت می کند. همچنین متد فراخوانی های از راه دور غیر همزمان را نیز مدیریت می کند. در بسیاری از سناریوها، از قبیل آپدیت های جزیی صفحه که از کنترل UpdatePanel استفاده می کنند، لایه نتورکینگ بطور اتوماتیک مورد استفاده قرار می گیرد و نیاز به نوشتن هیچ کدی نیست.

همچنین این لایه، ساپورت دسترسی به اعتبارسنجی فرم های سرور محور، اطلاعات سطح دسترسی، و اطلاعات پروفایل در اسکریپت کلاینت را نیز فراهم می کند. این ساپورت، تا وقتیکه application به لایبرری Microsoft Ajax دسترسی داشته باشد، در Web applicationهایی هم که با استفاده از ASP.NET ایجاد نشده اند نیز قابل دسترسی است.

سرویس های هسته ای

لایبرری های Ajax client-script در ASP.NET، متشکل از فایل های JavaScript (.js) هستند که دارای ویژگی هایی برای توسعه شی گرایی هستند.ویژگی های شی گرایی موجود در لایبرری های Microsoft Ajax client-script، سطج بالایی از سازگاری و پیمانه ای بودن (modularity) را در اسکریپ کردن کلاینت را فعال می کنند. سرویس های هسته ای زیر، بخشی از معماری کلاینت هسند:

  • اکستنشن های شی گرا به JavaScript از قبیل کلاس ها، فضاهای نامی، event handling، وراثت، انواع داده ای، و serialize کردن شی.
  • یک لایبرری کلاس پایه، که حاوی کامپوننت هایی از قبیل string builderها، و مدیریت خطای گسترش یافته است.
  • ساپورت لایبرری های جاواسکریپت، که یا در یک اسمبلی embed می شود یا بصورت فایل های جاواسکریپت مستقل در اختیار گذاشته می شوند. لایبرری های embed شده جاواسکریپت در یک اسمبلی می توانند نصب برنامه را آسان کنند و به حل مسائل versioning کمک می کند.

عیب یابی و مدیریت خطا

سرویس های هسته ای شامل کلاس Sys.Debug است، که متدهایی را برای نمایش اشیا در فرم های قابل خواندن در انتهای صفحه وب فراهم می کند. همچنین این کلاس، trace messageها را نشان می دهد، شما را قادر به استفاده از assortionها می کند، و به شما اجازه شروع debugger را می دهد. شی Error گسترش یافته API، جزییات استثنای مفیدی را با ساپورت مدهای release و debug در اختیار می گذارد.

جهانی سازی (globalization)

سرور Ajax و معماری کلاینت در ASP.NET، مدلی را برای محلی کردن و جهانی کردن اسکریپت کلاینت در اختیار می گذارد.این کار شما را قادر به طراحی برنامه هایی می کند که از پایه کدی واحد برای فراهم کردن UI برای موقعیت های (locale) زیادی (زبان ها و فرهنگ ها) استفاده می کنند. مثلاً، معماری Ajax، کد جاواسکریپت را طبق تنظیمات فرهنگ مرورگر کاربر، بطور اتوماتیک قادر به شکل دهی تاریخ (Date) و اشیای Number می کند، بدون نیاز به postback به سرور.

معماری سرور Ajax

قطعه های از سرور که توسعه Ajax را ساپورت می کند، متشکل از کنترل های سرور ASP.NET Web و کامپوننت هایی است که UI و روال کاری برنامه را مدیریت می کنند. همچنین قطعه های سرور، serialization، validation، و توسعه پذیری کنترل را مدیریت می کند. همچنین سرویس های وبی در ASP.NET وجود دارند که شمتا را قادر به دسترسی به سرویس های برنامه ASP.NET برای اعتبار سنجی فرم ها، سطح دسترسی، و پروفایل کاربران می کند.

ساپورت اسکریپت

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

همچنین می توانید اسکریپت کلاینت را برای برنامه های ASP.NETتان سفارشی کنید. در این مورد، همچنین می توانید از ویژگی های Ajax برای مدیریت کردن اسکریپت سفارشی تان بصورت فایل های .js (روی دیسک) یا فایل های .js قرارداده شده در اسمبلی بعنوان resource، استفاده کنید.

ویژگی های Ajax، شامل مدلی برای modeهای release و debug می باشد. مد release، چک کردن و مدیریت خطا (error checking and exception handling) را فراهم می کند که با کمترین اندازه فایل، برای اجرا بهینه سازی شده. مد debug، ویژگی های debugging بهتری از قبیل چک کردن type و argument را در اختیار می گذارد. ASP.NET، ورژن های debug را هنگامی که برنامه در مد debugging است، اجرا می کند. این کار شما را قادر به قرار دادن خطاها در اسکریپت های debug می کند و در عین حال اندازه کد release را به حداقل می رساند.

ساپورت اسکریپت برای Ajax در ASP.NET، جهت فراهم نمودن دو ویژگی زیر بکار می رود:

  • Microsoft Ajax Library، که یک type system و مجموعه ای از اکتنش های جاواسکریپت است که namespaceها، وراثت، اینترفیس، شمارش (enumeration)، refletion، و ویژگی های اضافی را در اختیار می گذارد.
  • رندرینگ جزیی صفحه، که ناحیه هایی از صفحه را با استفاده از یک postback غیرهمزمان، آپدیت می کند.

محلی سازی (localization)

معماری Microsoft Ajax، بر پایه مدل محلی ASP.NET 2.0 ساخته می شود. این موضوع، ساپورت اضافی برای فایل های .js محلی شده فراهم می کند که در یک اسمبلی قرار داده می شوند یا روی دیسک فراهم می شوند. ASP.NET می تواند اسکریپت های کلاینت محلی شده و منبع ها را بطور اتوماتیک برای زبان ها و مناطق ویژه serve کند.

سرویس های وب (Web Services)

با عملکردهای Ajax در یک صفحه ASP.NET، می توانید از اسکریپت کلاینت برای فراخوانی سرویس های وب ASP.NET (.asmx) و هم سرویس های Windows Communication Foundation یا WCF (.svc) استفاده کنید. referenceهای اسکریپت مورد نیاز بطور اتوماتیک به صفحه اضافه می شود، و در عوض کلاس های پروکسی Web service را generate می کند که از اسکریپت کلاینت مورد استفاده قرار می گیرد تا سرویس وب را فراخوانی کند.

سرویس های برنامه (Application Services)

سرویس های برنامه در ASP.NET، سرویس های وبی built-in هستند که بر اساس اعتبار سنجی فرم ها، سطح دسترسی، و پروفایل کاربران در ASP.NET هستند. می توان این سرویس ها را توسط اسکریپت کلاینت در یک صفحه وب با قابلیت Ajax، توسط یک برنامه کلاینت ویندوز، یا توسط یک کلاینت سازگار با WCF فراخوانی کرد.

کنترل های سرور

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

لیست زیر، پرکاربردترین کنترل های سرور Ajax را توضیح می دهد:

کنترل

توضیح

ScriptManager

ریسورس های اسکریپت برای کامپوننت ها کلاینت، رندرینگ جزیی صفحه، محلی سازی، جهانی سازی، و اسکریپت های سفارشی کاربر را مدیریت می کند. کنترل ScriptManagerبرای استفاده از UpdatePanel، UpdateProgress، و کنترل های Timer ضروری هستند. اما، کنترل ScriptManage، هنگام ایجاد solution فقط کلاینت، ضروری نیست.

UpdatePanel

به جای refresh کردن کل صفحه با استفاده از یک postback غیر همزمان، شما را قادر به refresh کردن بخش های انتخاب شده صفحه می کند.

UpdateProgress

اطلاعاتی در مورد آپدیت های جزیی صفحه در کنترل های UpdatePanel در اختیار می گذارد.

Timer

postbackهایی را در وقفه های تعریف شده اجرا می کند. می توانید از کنترل Timer برای پست کردن کل صفحه استفاده کنید، یا از آن همراه با کنترل UpdatePanelبرای اجرای آپدیت های جزیی صفحه در وقفه های تعریف شده استفاده کنید.

همچنین می توانید کنترل های سرور سفارشی ASP.NET ایجاد کنید که حاوی رفتارهای کلاینت Ajax است. کنترل های سفارشی ای که قابلیت های کنترل وب های دیگر ASP.NET را بهبود می بخشند، بصورت extendercontrols ارجاع (refer) می شوند.

Ajax Control Toolkit

Ajax Control Toolkit حاوی کنترل هایی است که می توانید برای ساختن برنامه های وب با قابلیت Ajax استفاده کنید. این کنترل ها نیازی به دانش جاواسکریپت یا Ajax ندارند. آنها با استفاده از مفاهیمی طراحی شده اند که برای برنامه نویسان ASP.NET Web Forms application اشنا هستند. با استفاده از Ajax Control Toolkit، می توانید برنامه های ASP.NET Web Forms با قابلیت Ajax و برنامه های وب ASP.NET MVC را با درگ کردن کنترل ها از Toolbox ویژوال استودیوبسازید. Ajax Control Toolkit، یک پروژه open-source است که بخشی از CodePlex Foundation محسوب می شود.


برای یادگیری کامل آژاکس لطفا به لینک روبرو رجوع کنید: آموزش AJAX





آموزش طراحی سایت



کتابی که براتون لینکشو می گذارم آموزش طراحی سایت می باشد این کتاب HTML5 ,css3 را بطور کامل آموزش می دهد و حدود 400 صفحه می باشد و از طریق یادگیری این کتاب می توانید صفحات وب قدرتمندی را ایجادکنید.حتما دانلود کنید واز آن لذت ببرید.

      لینک دانلود :     آموزش طراحی سایت




نویسه جدید وبلاگ

آموزش طراحی سایت


آموزش تخصصی CSS (قسمت اول)

در این سلسله ازمقالات، شما چگونگی استفاده از CSS جهت کنترل style و layout چندین صفحه وب بطور همزمان را یاد خواهید گرفت.

برای یادگیری CSS، شما باید درکی پایه ای از مفاهیم HTML و XHTML داشته باشید.

نمونه از CSS

body
{
background-color:#d0e4fe;
}
h1
{
color:orange;
text-align:center;
}
p
{
font-family:"Times New Roman";
font-size:20px;
}

 

CSS چیست؟

  • CSS مخفف Cascading Style Sheets است
  • styleها چگونگی نمایش عناصر HTML را تعریف می کنند
  • styleها برای حل یک مشکل به HTML 4.0 اضافه شدند
  • External Style Sheets می تواند در در انجام کار صرفه جویی کند
  • External Style Sheets در فایل های CSS ذخیره می شوند

نمایش CSS

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

Styleها مشکل بزرگی را حل کردند

HTML هرگز به قصد در برگرفتن tag برای فرمت کردن یک سند ایجاد نشد.

HTML هرگز به قصد تعریف محتوای یک سند ایجاد نشد.

وقتی tagهایی مانند <font> و attributeهای رنگ به HTML 3.2 اضافه شد، کابوسی برای برنامه نویسان بود. develop کردن وبسایت های بزرگ، که فونت ها و اطلاعات رنگ به هر صفحه مجزا اضافه شدند، فرآیندی طولانی و پرهزینه شد.

برای حل این مشکل، کنسرسیوم World Wide Web، تصمیم گرفت CSS را ایجاد کند.

در HTML 4.0، می توان کل فرمتینگ را از سند HTML حذف کرد، و در فایل CSS جداگانه ای ذخیره کرد.

امروزه، همه مرورگرها CSS را ساپورت می کنند.

CSS، در انجام مقدار زیادی کار صرفه جویی می کند

CSS، تعریف می کند عناصر HTML چگونه نمایش داده می شوند.

معمولاً Styleها در فایلهای .css ذخیره می شوند. style sheetهای خارجی شما راتنها با ویرایش یک فایل قادر به تغییر ظاهر و layout همه صفحات موجود در یک وبسایت می کند.

مثال

فایل HTML زیر، لینکی به یک style sheet خارجی با تگ <link> است:

<html>
<head>
<link rel="stylesheet"
type="text/css" href="ex1.css" />
</head>

<body>

<h1>This header is 36 pt</h1>
<h2>This header is blue</h2>

<p>This paragraph has a left margin of 50 pixels</p>

</body>
</html>

 

این، فایل style sheet است:

body
{
background-color:yellow;
}
h1
{
font-size:36pt;
}
h2
{
color:blue;
}
p
{
margin-left:50px;
}

 

سینتکس CSS

قاعده CSS، دارای دو بخش اصلی است: یک selector، و یک یا چندین تعریف (declaration):

clip_image001

selector، معمولاً عنصر HTML است که می خواهید style کنید.

هر declaration، از یک property و یک value تشکیل شده است.

property، استایل اتریبیوتی (style attribute) است که می خواهید تغییر دهید. هر property دارای یک value است.

نمونه از CSS

declarationهای CSS، همیشه با یک نقطه ویرگول (;) تمام می شوند، و گروههای declaration در کمانک {} قرار می گیرند:

p {color:red;text-align:center;}

 

برای اینکه CSS را بیشتر قابل خواندن کنید، می توانید هر declaration را در یک خط قرار دهید، مانند مثال زیر:

 

p
{
color:red;
text-align:center;
}

Commentهای CSS

می توانید ازcommentها برای توضیح کدتان استفاده کنید، و ممکن است هنگامی که source code را ویرایش می کنید، به شما کمک کنند. مرورگرها، کامنت ها را نادیده می گیرند.

 
/*This is a comment*/
p
{
text-align:center;
/*This is another comment*/
color:black;
font-family:arial;
}

Selectorهای id و class

CSS علاوه بر تنظیم یک style برای عنصر HTML، به شما اجازه تعیین selectorهای خودتان به نام های "id" و "class" را هم می دهد.

سلکتور id

از سلکتور id برای تعیین style برای عنصر واحد و چندگانه استفاده می شود.

سلکتور id از اتریبیوت عنصر HTML استفاده می کند، و با یک "#" تعریف می شود.

قانون style زیر به عنصری با آی دی ="para1" اعمال می شود:

 
#para1
{
text-align:center;
color:red;
}

نام id را با عدد شروع نکنید! زیرا در Mozilla/Firefox کار نمی کند.

سلکتور class

از سلکتور class برای تعیین یک style برای گروهی از عناصر استفاده می شود. برخلاف سلکتور id، سلکتور class اغلب روی چندین عنصر بکار می رود.

این کار به شما اجازه تعیین یک style معین برای هر عنصر HTML با همان کلاس را می دهد.

سلکتور کلاس از اتریبیوت کلاس HTML استفاده می کند، و با یک "." تعریف می شود.

در مثال زیر، همه عناصر HTML با کلاس ""center، وسط چین خواهند شد:

.center {text-align:center;}

هرگز نام یک کلاس را با عدد شروع نکنید! زیرا فقط در Internet Explorer ساپورت می شود.

سه راه برای insert کردن CSS

  • External style sheet
  • Internal style sheet
  • Inline style

Style Sheet خارجی (external)

Style Sheet خارجی، هنگامی که style به صفحات زیادی اعمال می شود، مناسب است. با یک Style Sheet خارجی، می توانید ظاهر کل یک سایت ر با تغییر دادن یک فایل عوض کنید. هر صفحه باید با استفاده از تگ <link> به style sheet لینک شود. تگ <link>، درون بخش head قرارمی گیرد:

 
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css" />
</head>

Style Sheet خارجی، را می توان در یک text editor نوشت. این فایل نباید حاوی هیچ تگ html باشد. style sheet شما باید با پسوند .css ذخیره شود. نمونه ای از یک style sheet در زیر نشان داده شده است:

 
hr {color:sienna;}
p {margin-left:20px;}
body {background-image:url("images/back40.gif");}

فضاهای بین مقدار property و واحدها را خالی نگذارید!

Style Sheet داخلی (internal)

Style Sheet داخلی باید هنگامی مورد استفاده قرار گیرد که یک سند واحد، style منحصر به فردی دارد. styleهای داخلی با استفاده از تگ <style> در بخش head صفحه HTML تعریف می شود، مانند مثال زیر:

 
<head>
<style type="text/css">
hr {color:sienna;}
p {margin-left:20px;}
body {background-image:url("images/back40.gif");}
</style>
</head>

Styleهای Inline

استایل inline، با ترکیب کردن contentبا presentation، بسیاری از مزایای style sheetها را از دست می دهد. از این متد باید به ندرت استفاده کرد.

برای استفاده از استایل های inline، باید از اتریبیوت استایل در تگ مربوط استفاده کرد. اتریبیوت استایل ممکن است هر نوع خصوصیت CSS را در بر گیرد. این مثال چگونگی تغییر دادن رنگ و حاشیه چپ یک پاراگراف را نشان می دهد:

 
<p style="color:sienna;margin-left:20px">This is a paragraph.</p>

Style Sheetهای چندگانه

اگر بعضی از propertyها برای یک selector در style sheetهای مختلف تعیین شده باشد، valueها از style sheet معینی ارث برده خواهند شد.

مثلاً، یک style sheet خارجی دارای propertyهای زیر برای سلکتور h3 است:

 
h3
{
color:red;
text-align:left;
font-size:8pt;
}

و یک style sheet داخلی دارای propertyهای زیر برای سلکتور h3 است:

 
h3
{
text-align:right;
font-size:20pt;
}

اگر صفحه ای با style sheet داخلی به یک style sheet خارجی لینک شود، propertyهای h3 اینگونه خواهد بود:

 
color:red;
text-align:right;
font-size:20pt;

رنگ، از style sheet خارجی ارث می برد و text-alignment و اندازه فونت با style sheet داخلی جایگزین می شود.

Styleهای چندگانه به یک استایل cascade می شوند

Styleها را می توان به طرق زیر معین کرد:

  • درون یک عنصر HTML
  • درون بخش head صفحه HTML
  • در یک فایل CSS خارجی

نکته: حتی style sheetهای خارجی چندگانه را نیز می توان درون یک سند HTML واحد reference کرد.

ترتیب cascade کردن

هنگامی که بیش از یک style که برای عنصر HTML تعیین شده، وجود داشته باشد، از کدام style استفاده می شود؟

معمولاً می توان گفت که همه styleها، با قوانین زیر به یک style sheet مجازی cascade می شود، و قانون چهارم بالاترین اولویت را دارد:

  • پبش فرض مرورگر
  • style sheet خارجی
  • style sheet داخلی (در بخش head)
  • استایل inline (درون عنصر HTML)

بنابراین، یک استایل inline، بالاترین اولوین را دارد، که بدین معناست که استایلی را که درون تگ <head> تعریف شده، یا در یک style sheet خارجی، یا در مرورگر را override می کند.

نکته: اگر لینک به style sheet خارجی بعد از style sheet داخلی در HTML <head> داخلی قرار داده شود، style sheet خارجی، style sheet داخلی را override می کند.






اموزش ASP

آموزش THEME و SKIN :


آموزش گرافیک در ASP.NET


theme، مجموعه ای از تنظیمات پراپرتی است که به شما اجازه می دهد ظاهر صفحات و کنترل ها را تعریف کنید، و آن ظاهر را در صفحات web application، در کل یک web application، یا کل web applicationها روی سرور اعمال کنید.

تم ها و اسکین های کنترل

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

اسکین ها

یک فایل اسکین ، دارای اکتنشن .skin و حاوی تنظیمات پراپرتی برای کنترل های منفرد از قبیل Button، Label، Textbox، یا کنترل های Calendar است. تنظیمات Control skin، شبیه control markup هستند، اما فقط حاوی پراپرتی هایی است که می خواهید به عنوان بخشی از تم تنظیم کنید. مثلاً، کد زیر، یک control skin برای کنترل Button است:

<asp:button runat="server" BackColor="lightblue" ForeColor="black" />

 

شما فایل های .skin را در پوشه Theme ایجاد کردید. یک فایل .skin ممکن است حاوی یک یا چند control skin برای یک یا چند control type باشد. می توانید اسکین هایی را در فایلی جدا برای هر کنترل تعریف کنید یا همه اسکین ها را برای یک تم در فایلی واحد تعریف کنید.

دو نوع control skin وجود دارد: اسکین های پیش فرض و اسکین های نام گذاری شده:

  • اسکین پیش فرض: هنگامی که تم به یک صفحه اعمال می شود،بطور اتوماتیک به همه کنترل های یک type، اعمال می شود. یک control skin، یک اسکین پیش فرض است، اگر دارای اتریبیوت SkinID نباشد. مثلاً، اگر یک اسکین پیش فرض برای کنترل Calendar ایجاد کنید، control skin به همه کنترل های Calendar که روی صفحه ای که از تم استفاده می کنند اعمال می شود. (اسکین های پیش فرض، دقیقاً بوسیله control type مچ می شوند، بطوری که اسکین کنترل Button به همه کتنرل های Button اعمال می شود، اما به کنترل های LinkButton یا کنترل هایی که از Button object مشتق می شوند اعمال نمی شود.)
  • اسکین نام گذاری شده: کنترلی با مجموعه پراپرتی های SkinID است. اسکین های نام گذاری شده بطور اتوماتیک به کنتنرل هایی توسط type اعمال نمی شوند. در عوض، اسکین نام گذاری شده را مستقیماً به کنترلی توسط تنظیم پراپرتی SkinID کنترل اعمال می کنید. ایجاد اسکین های نام گذاری شده به شما اجازه می دهند اسکین های مختلفی را برای instanceهای مختلف همان کنترل در یک برنامه تنظیم کنید.

 

CSS

یک تم می تواند حاوی فایل .css نیز باشد. وقتی شما یک فایل .css در پوشه تم قرار می دهید، style sheet بطور اتوماتیک بعنوان بخشی از تم اعمال می شود. شما با استفاده از اکتنشن .css در پوشه تم ، یک style sheet تعریف می کنید.

Theme Graphics و منابع دیگر

همچنین این تم ها ممکن است حاوی graphics و منابع دیگر از قبیل فایل های script، یا فایل های صوتی شود. مثلاً، ممکن است بخشی از تم صفحه شما حاوی یک اسکین برای کنترل TreeView باشد. می توانید graphicهای استفاده شده بمنظور نمایش دکمه expand و دکمه collapse را بعنوان بخشی از تم شامل کنید.

معمولاً فایل های منبع برای تم در همان پوشه ای هستند که فایل های اسکین برای تم وجود دارند، اما می توانند هر جایی در Web application نیز باشند، مثلاً در subfolder پوشه تم .

<asp:Image runat="server" ImageUrl="ThemeSubfolder/filename.ext" />

 

همچنین می توانید فایل های منبع تان را بیرون از پوشه تم نیز ذخیره کنید. اگر از سینتکس tilde (~) برای ارجاع به فایل های منبع استفاده می کنید، Web application بطور اتوماتیک تصاویر را پیدا خواهد کرد. مثلاً اگر منابع یک تم را در یک subfolder برنامه تان قرار دهید، می توانید از مسیرهای فرم ~/SubFolder/filename.ext برای ارجاع به فایل های منبع استفاده کنید، همانطور که در مثال زیر نشان داده شده است.

<asp:Image runat="server" ImageUrl="~/AppSubfolder/filename.ext" />

Scope کردن تم

می توانید تم هایی را برای یک Web applicationواحد، یا بعنوان یک تم جهانی که می تواند توسط همه applicationهای روی Web server استفاده شود، تعریف کنید. بعد از تعریف تم ، می توان آن را با استفاده از اتریبیوت تم یا StyleSheetTheme روی صفحه های مجزا قرار داد، یا می توان با تنظیم عنصر <pages> در پیکر بندی application به همه صفحه های یک application اعمال کنید. اگر عنصر <pages> در فایل Machine.config تعریف شود، تم به همه صفحه ها در Web applicationهای روی سرور اعمال خواهد شد.

تم های صفحه

تم صفحه، یک پوشه تم با control skins، style sheets، فایل های Graphics، و منابع دیگر است که بصورت یک subfolder در پوشه \App_Themes در وب سایت شما ایجاد شده است. هر تم ، یک subfolder متفاوت از پوشه \App_Themes است. مثال زیر، تم یک صفحه معمولی را نشان میدهد، که دو تم بنام های BlueTheme و PinkTheme را تعریف می کند.

MyWebSite
App_Themes
BlueTheme
Controls.skin
BlueTheme.css
PinkTheme
Controls.skin
PinkTheme.css

 

تم های جهانی (global)

تم جهانی، تمی است که می توانید به همه وب سایت های روی سرور اعمال کنید. تم های جهانی به شما اجازه تعریف نمایی کلی برای domain تان، هنگامی که از چندین وب سایت های که روی همان سرور هستند نگهداری می کنید، می دهد.

تم های جهانی، شبیه تم های صفحه هستند که حاوی تنظیمات property، تنظیمات style sheet، و graphic هستند. اما، تم های جهانی در پوشه ای بنام Theme ذخیره می شونده که برای سرور وب، global محسوب می شود. هر وب سایتی روی سرور، و هر صفحه ای در وب سایت، می تواند یک تم جهانی را reference کند.

آموزش ASP.NET

ارجحیت تنظیمات تم

با تعیین چگونگی اعمال شدن تم، می توانید ارجحیتی را که تنظیمات تم در تنظیمات کنترل محلی می گیرد، مشخص کنید.

اگر پراپرتی تم صفحه را تنضیم کنید، تنظیمات کنترل در تم و صفحه ادغام می شوند تا تنظیمات نهایی برای کنترل را شکل دهند. اگر تنظیمات کنترل هم در کنترل و هم در تم تعریف شوند، تنظیمات کنترل تم هر تنظیمات صفحه ای را روی کنترل override می کند. این استراتژی تم را قادر به ایجاد نمایی ثابت در صفحات می کند، حتی اگر کنترل های روی صفحه از قبل دارای تنظیمات پراپرتی مستقلی باشند. مثلاً، به شما اجازه می دهد تمی را به صفحه ای که در نسخه قبلی ASP.NET ایجاد کرده اید، اعمال کنید.

متناوباً، می توانید تمی را با تنظیم کردن پراپرتی StyleSheetTheme بصورت style sheet اعمال کنید. در این مورد، تنظیمات صفحه محلی، بر تنظیمات تعریف شده در تمی که هنگام تعریف تنظیمات در هر دو جا تعریف شده، ارجحیت دارد. این مدلی است که توسط CSS استفاده می شود. اگر می خواهید حتی هنگامی که تمی را برای نمای کلی اعمال می کنید، قادر به تنظیمات پراپرتی های کنترل های مستقل روی صفحه باشید، ممکن است تمی را بصورت style sheet اعمال کنید.

عنصرهای تم جهانی را نمی توان بصورت جزیی با عنصرهای تم هایی در سطح application جایگزین کرد. اگر تمی در سطح application را هم نام با تم جهانی ایجاد کنید، عناصر تم در تم سطح application، عناصر تم جهانی را override نخواهند کرد.

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

به عنوان یک قانون، می توانید از تم ها برای تعریف پراپرتی هایی استفاده کنید که مربوط به ظاهرصفحه یا کنترل و یا محتویات استاتیک هستند. می توانید فقط پراپرتی هایی را تنظیم کنید که دارای اتریبیوت ThemeableAttribute هستند و در کلاس کنترل روی true تنظیم شده اند.

پراپرتی هایی که بجای ظاهر، رفتار کنترل را تنظیم می کنند، valueهای تم را نمی پذیرند. مثلاً، نمی توانید پراپرتی CommandName کنترل Button را با استفاده از تم تنظیم کنید. بطور مشابه، نمی توانید از تم برای تنظیم پراپرتی AllowPaging کنترل GridView یا پراپرتی DataSource استفاده کنید.

دقت کنید که نمی توانید از عبارت سازها، که عبارات کد را برای تخصیص در صفحه ای هنگام compile کردن، generate می کنند، در تم ها و اسکین ها استفاده کنید.

تم ها در مقابل cascading style sheetها

تم ها در اینکه مجموعه ای از اتریبیوت های رایج را که می توان به هر صفحه ای اعمال کرد تعریف می کنند، شبیه cascading style sheetها هستند. اما، تم ها در موارد زیر با cascading style sheetها فرق دارند:

  • تم ها می توانند پراپرتی های زیاد یک صفحه یا کنترل را تعریف کنند، نه فقط پراپرتی های استایل را. مثلاً، با استفاده از آنها می توانید برای کنترل TreeView، و template layout کنترل GridView، و غیره، گرافیک تعریف کنید.
  • تم ها می توانند حاوی گرافیک باشند.
  • تم ها مانند style sheetها، cascade نمی کنند.
  • بطورپیش فرض، هر valueی پراپرتی تعریف شده در تم که توسط پراپرتی Theme، reference شده است، valueهای پراپرتی را که بطور تعریفی روی کنترل تنظیم شده است، Override می کند، مگر اینکه شما خودتان تم را با استفاد ه از پراپرتی StyleSheetTheme مستقیماً اعمال کنید.
  • فقط یک تم را می توان به هر صفحه اعمال کرد. نمی توانید چندین تم را به یک صفحه اعمال کنید، بر عکس style sheetها که چندین style sheet را می توان اعمال کرد.

 

ملاحظات امنیتی
  • رفتار یک کنترل را طوری تغییر دهید که آنطور که انتظار می رود، رفتار نکند.
  • اسکریپت را در کامپیوتر client تزریق کنید، که منجر به ریسک cross-site scripting می شود.
  • اعتبار سنجی را تغییر دهید.
  • اطلاعات حساس را expose کنید.
  • راههای کاهش این خطرهای رایج عبارتند از:
  • دایرکتوری های جهانی و تم application را با تنظیمات مناسب کنترل access محافظت کنید. فقط باید به کاربرهای مورد اطمینان اجازه نوشتن فایل روی دایرکتوری تم را داد.
  • از تم هایی با منبع غیر قابل اطمینان استفاده کنید. همیشه قبل از استفاده از تم ها در وب سایت تان، تم های خارج از سازمانتان را برای پیدا کردن کدهای خطرناک آزمایش کنید.
  • نام تم را در داده های کوئری، expose نکنید. کاربرهای بدجنس می توانند از این اطلاعات برای استفاده از تم هایی که برای برنامه نویس ناشناس هستند استفاده کنند، و بدینوسیله اطلاعات حساس را expose می کنند.

برای فراگیری ASP.NET لطفا به لینک زیر رجوع کنید:

اموزش ASP.NET





کتاب آموزش ASP

متن نویسه...

 

 

یکی از کتابهای مرجع برای یادگیری   ASP.NET کتاب UNLEASHED  می باشد.این کتاب حدود 1900 صفحه می باشد و واقعا کتاب مرجع خوبی برای یادگیری برنامه نویسی ASP.NET 4   می باشد. حتما دانلود کنید و از این کتاب استفاده ببرید.


 لینک دانلود:       کتاب آموزش ASP.NET





آموزش تخصصی آژاکس

آموزش ASP.NET


آموزش تخصصی Ajax

مقدمه

ASP.NET AJAX، که قبلا "atlas" نامیده میشد، پیاده سازی مایکروسافت از قالب کاری بر اساس AJAX است که برای ASP.NET ایجاد شده است (گرچه می تواند در platformهای دیگر نیز مورد استفاده قرار گیرد). AJAX، مخفف عبارت Asynchronous JavaScript and XML است، که گرچه بسیار ساده است، ولی روشی برای انتقال داده ها بین سرور و کلاینت بدون ارسال کل صفحه است، و بدین طریق postback کاملی را ایجاد می کند. این کار به کاربر اجازه تجربه ای بهتر را می دهد، از آنجاییکه بارگذاری محتوای دینامیک را می توان در پشت زمینه بدون refresh یا redraw کردن نیز انجام داد. اگر تا بحال از gmail یا Outlook Web Access استفاده کرده باشید، پس حتما از یک webapplication با قابلیت Ajax استفاده کرده اید؛ بویژه اینکه گوگل Ajax را بسیار معروف کرده است.

در حالیکه استفاده از Ajax، بدون Microsoft ASP.NET AJAX کاملا امکانپذیر است، خیلی چیزها بسیار آسانتر هستند، زیرا مایکروسافت بعضی از کسل کننده ترین بخش های Ajax را در پیاده سازی شان جا داده است. مثلاً، 3 مرورگر معروف به روش های مختلفی برای استفاده از Ajax احتیاج دارند و دارای پیاده سازی های جاواسکریپت مختلفی هستند. ASP.NET AJAX، این کار را بسیار ساده کرده است، و به شما اجازه نوشتن یک کد برای هر سه مرورگر معروف را می دهد.

شروع کار

قبل از هر چیز، باید با ASP.NET آشنایی داشته باشید. اگر شما دارای IDE مناسب باشید، استفاده از ASP.NET AJAX بسیار آسان خواهد شد. توصیه می شود از Visual Web Developer 2008 Express اسنتفاده کنید.

بعد از اینکه آخرین نسخه را نصب کردید، Visual Web Developer 2008 Express را باز کنید، و هنگامی که "New Web Site..." را از منوی File انتخاب کردید، از تمپلیت "ASP.NET website" استفاده کنید.

طبق معمول، از مثال "Hello, world!" به عنوان مثال اول استفاده می کنیم. ابتدا با کد شروع می کنیم و. سپس آن را توضیح خواهیم داد. اگر قبلاً این کار را نکرده اید، باید یک پروژه وب سایت جدید در Visual Web Developer ایجاد کنید. IDE یک فایل جدید Default.aspx و Default.aspx.cs برای شما ایجاد خواهد کرد، که شیه همه صفحات دیگر ASP.NET خواهد بود. بیایید کمی AJAX به آن اضافه کنیم:

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Hello, world!</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="MainScriptManager" runat="server" />
<asp:UpdatePanel ID="pnlHelloWorld" runat="server">
<ContentTemplate>
<asp:Label runat="server" ID="lblHelloWorld" Text="Click the button!" />
<br /><br />
<asp:Button runat="server" ID="btnHelloWorld" OnClick="btnHelloWorld_Click" Text="Update label!" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>

در CodeBehind، چیز جدیدی غیر از این رویداد که باید اضافه کنید وجود ندارد:

protected void btnHelloWorld_Click(object sender, EventArgs e)
{
lblHelloWorld.Text = "Hello, world - this is a fresh message from ASP.NET AJAX! The time right now is:
"
+ DateTime.Now.ToLongTimeString();
}

در قسمت markup، در مقایسه با ASP.NET معمولی، از دو چیز جدید استفاده می کنیم، کنترل ScriptManager و کنترل UpdatePanel. کنترل ScriptManager چک می کند آیا فایل های ASP.NET AJAX شامل شده اند و اینکه AJAX support اضافه شده است، و باید به هر صفحه ای که دوست دارید از قابلیت AJAX استفاده کنید، اضافه شود. بعد از manager، یکی دیگر از پرکاربردترین کنترل ها هنگام کار با AJAX، کنترل UpdatePanel است. این کنترل به شما اجازه می دهد markupیی را که دوست دارید به طور جزیی آپدیت شود، wrap کنید، بدین معنی که بدون ایجاد یک postback واقعی در سرور، آپدیت شود. توضیحات بیشتر در مورد کنترل UpdatePanel در فصل بعد خواهد آمد. علاوه بر این دو کنترل، هر چیز دیگری، کنترل های استاندارد هستند، بدون هیچ تغییری که رفتار جایگزین را نشان می دهد.

سعی کنید سایت مثال را اجرا کنید، و روی دکمه کلیک کنید. لیبل با متن Hello world، و زمان کنونی آپدیت می شود. به طور مکرر، روی دکمه کلیک کنید، و خواهید دید که لیبل هر دفعه timestamp کنونی را بدست خواهد آورد. به غیبت عجیب پنجره چشمک زن و نوار وضعیت در حال اجرا توجه داشته باشید – هر کاری بدون آپدیت کردن هیچ چیز جز لیبل انجام نمی شود. ما اولین صفحه AJAX را ایجاد کرده ایم. اگر دوست دارید بدانید این صفحه چگونه کار می کند، "enablepartialrendering" کنترل ScriptManager را روی false تنظیم کنید:

<asp:ScriptManager ID="MainScriptManager" runat="server" enablepartialrendering="false" />

این کار جلوی استفاده از rendering جزیی را روی صفحه می گیرد، و به شما نشان می دهد بدون AJAX چگونه کار می کند.

در قسمت بعدی، نگاهی به کنترل های دیگر AJAX و چگونگی استفاده از آنها خواهیم انداخت.

کنترل UpdatePanel

احتمالاً این کنترل، مهم ترین کنترل در بسته ASP.NET AJAX است. این کنترل، اجازه render جزیی ناحیه ای را می دهد. قبلا از آن در مثال Hello world استفاده کردیم، در ادامه نگاهی عمیق تر به جنبه های دیگر این کنترل خواهیم انداخت.

تگ <asp:UpdatePanel> دارای دو زیرتگ (childtags) است: ContentTemplate و Triggers. تگ ContentTemplate ضروری است زیرا دربرگیرنده محتویات پنل است. این محتویات می تواند هر چیزی که معمولاً در صفحه گذاشته می شود، باشد،؛ از متن گرفته تا کنترل های وب. تگ trigger به شما اجازه تعریف بعضی triggerها را می دهد که پنل را وادار به آپدیت کردن محتویاتش می کند. مثال زیر، نحوه استفاد ه از این دو childtag را نشان می دهد.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>UpdatePanel</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel runat="server" id="UpdatePanel" updatemode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger controlid="UpdateButton2" eventname="Click" />
</Triggers>
<ContentTemplate>
<asp:Label runat="server" id="DateTimeLabel1" />
<asp:Button runat="server" id="UpdateButton1" onclick="UpdateButton_Click" text="Update" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel runat="server" id="UpdatePanel1" updatemode="Conditional">
<ContentTemplate>
<asp:Label runat="server" id="DateTimeLabel2" />
<asp:Button runat="server" id="UpdateButton2" onclick="UpdateButton_Click" text="Update" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>

در زیر CodeBehind آورده شده است. کافیست متد زیر را به فایل اضافه کنید:

protected void UpdateButton_Click(object sender, EventArgs e)
{
DateTimeLabel1.Text = DateTime.Now.ToString();
DateTimeLabel2.Text = DateTime.Now.ToString();
}

خوب، این مثال چه می خواهد بگوید؟ بیایید امتحانش کنیم، و روی آن دو دکمه کلیک کنیم. متوجه خواهید شد که دکمه اول، فقط datestamp اول را آپدیت می کند، در حالیکه دکمه دوم، هر دو را آپدیت می کند؛ چرا؟ چون ما پنل ها راطوری تنظیم کرده ایم که به طور شرطی آپدیت کنند، بدین معنا که محتویاتشان فقط در صورتی آپدیت می شوند که چیزی درون آنها یک postback ایجاد کند، یا یکی از triggerهای تعریف شده، اجرا شود. همانطور که می بینید، UpdatePanel اول حامل تریگری است که دکمه دوم را reference می کند. این کار تضمین می کند که پنل اول، حتی وقتی هم که کنترلی در UpdatePanel دیگر استفاده می شود، آپدیت می شود. تگ AsyncPostBackTrigger بسیار ساده است- فقط دارای دو صفت (attribute) است؛ یکی controlid که مرجعی به کنترلی است که می تواند آن را trigger کند، و دیگری eventname، که می گوید کدام enettype می تواند باعث اجرا شدن تریگر شود. اگر دوست دارید محتویات یک UpdatePanel آپدیت شوند، می توانید پراپرتی updatemode را به Always تغییر دهید.

در کل، UpdatePanel فقط باید در مناطقی باشد که باشند که دوست دارید آپدیت جزیی را انجام دهید. کل صفحه را در یک UpdatePanel، wrap نکنید، و از استفاده از چندین UpdatePanel نترسید، زیرا این کار به شما امکان کنترل بیشتری روی این می دهد که کدام ناحیه ها چه زمانی آپدیت کنند.

کنترل UpdateProgress

یکی از مشکلات AJAX، این است که چون غیر همزمان و در پیش زمینه است، مرورگر هیچ statusیی به شما نشان نخواهد داد. اما با سرورهای و متدهای سریع، این مشکل زیاد هم بزرگ نیست، اما هروقت شما متدی دارید که زمان زیادی طول می کشد، احتمال دارد کاربر خسته شود. خوشبختانه، ASP.NET AJAX این مشکل را نیز با کنترلی بنام UpdateProgress حل می کند. این کنترل از template خودتان استفاده می کند تا نشان دهد یک متد غیر همزمان در حال کار کردن است. نگاهی به مثال زیر بیاندازید، که کنترلی را که در حال فعالیت است، نشان می دهد.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>UpdateProgress control</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdateProgress runat="server" id="PageUpdateProgress">
<ProgressTemplate>
Loading...
</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel runat="server" id="Panel">
<ContentTemplate>
<asp:Button runat="server" id="UpdateButton" onclick="UpdateButton_Click" text="Update" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>

متد زیر باید به فایل CodeBehind اضافه شود:

protected void UpdateButton_Click(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(5000);
}

این مثال ساده به شما نشان خواهد داد استفاده از کنترل UpdateProgress چقدر آسان است. وقتی روی این دکمه کلیک می شود، script بمدت پنج ثانیه از standby می شود، و متن "Loading..." روی صفحه تان نمایش داده می شود. می توانید از هر چیزی در ProgressTemplate، شامل markup معمولی و کنترل های دیگر استفاده کنید. یکی از استفاده های رایج، GIF متحرک است، که با استفاده از موقعیت یابی CSS روی صفحه قرار داده شده است.

می توانید روی صفحه کنترل های چندگانه UpdateProgress داشته باشید، و با استفاده از پراپرتی AssociatedUpdatePanelID می توانید مطمئن شوید که UpdateProgress فقط هنگامی نمایش داده می شود که یک UpdatePanel ، آپدیت شده است.

آشنایی با پراپرتی DynamicLayout نیز جالب است. این پراپرتی می گوید آیا یک صفحه باید فضایی را برای کنترل progress رزرو کند یا خیر. اگر روی true تنظیم شود، که پیش فزض است، فضا دینامیک است، پس رزرو نمی شود، اما وقتی کنترل نشان داده می شود، فضا گرفته می شود. اگر دوست دارید فضا را رزر کنید، این پراپرتی را روی false تنضیم کنید. برای دیدن تفاوت، می توانید این پراپرتی را به مثال ما اضافه کنید و آن را تغییر دهید.

اگر تعدادی از postbackها سریع باشند، UpdateProgress، مدتی کوتاه نمایش داده خواهد شد، و منجر به رفتار چشمک زدن خواهد شد، که ممکن است کاربرانتان را گیج کند. به همین دلیل، می توانید حداقل زمان روی دادن را قبل از نشان دادن کنترل progress، تعیین کنید. این کار را می توان با اتریبیوت DisplayAfter انجام داد. باید عددی را بصورت میلی ثانیه تعیین کنید تا قبل از نمایش کنترل progress سپری شود؛ مثلاً اگر دوست دارید دو ثانیه صبر کنید عدد 2000 را تعیین کنید.

کنترل Timer

این کنترل به شما اجازه می دهد pstbackهایی را در بعضی از وقفه ها (interval) انجام دهید. اگر با UpdatePanels استفاده شود، که رایج ترین روش است، به صفحه شما اجازه آپدیت جزیی و زمان بندی شده را می دهد، اما می توان برای postback کردن کل صفحه نیز استفاده کرد. در این بخش، روی استفاده از تایمرهایی با UpdatePanels تمرکز خواهیم کرد.

در زیر مثالی ساده از نحوه استفاده از کنترل Timer آورده شده است که فقط هر پنج ثانیه یکبار timestamp را آپدیت می کند.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Timers</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:Timer runat="server" id="UpdateTimer" interval="5000" ontick="UpdateTimer_Tick" />
<asp:UpdatePanel runat="server" id="TimedPanel" updatemode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger controlid="UpdateTimer" eventname="Tick" />
</Triggers>
<ContentTemplate>
<asp:Label runat="server" id="DateStampLabel" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>

خیلی ساده است. ما یک UpdatePanel نرمال داریم که حامل یک Trigger reference به کنترل timer جدید ماست.

این بدین معناست که هروقت Timer تیک می کند – یعنی رویداد Tick را اجرا می کند – پنل آپدیت می شود. همانطور که در لیست کد CodeBehind می بینید، هر بار که Timer اجرا می شود، DateStampLabelرا اجرا می کنیم. این کار را می توان با JavaScript موثرتر انجام داد، که زمان را روی clientside آپدیت می کند بجای اینکه سرور را درگیر کند. از این مثال فقط برای نشان دادن پتانسیل کنترل Timer استفاده می شود.

روش دیگر، شامل کردن Timer درون است. انجام این کار، ما را از تعریف یک trigger بی نیاز می کند، اما باید بدانید که رفتار، بسته به اینکه آیا Timer درون است یا بیرون آن، متفاوت خواهد بود. وقتی Timer درون UpdatePanel باشد، تا وقتی که UpdatePanel کاملاً آپدیت می شود، Timer دوباره ساخته نمی شود. این بدین معناست که اگر یک تایمری با وقفه شصت ثانیه ای داشته باشیم، و آپدیت پنج ثانیه طول بکشد، رویداد بعدی شصت ثانیه بعد از رویداد قبلی اجرا نمی شود، بلکه شصت و پنج ثانیه بعد اجرا می شود. از سوی دیگر، اگر تایمر خارج از UpdatePanel باشد، کاربر می تواند فقط پنجاه و پنج ثانیه به محتویات پنل نگاه خواهد کرد، قبل از اینکه دوباره آپدیت شود.

همیشه بیاد داشته باشید که گرچه آپدیت های جزیی روی سرور به سنگینی postbackهای واقعی نیستند، اما سرور هنوز contact می شود، و ممکن است هنگام استفاده از تایمرها، ostbackهای جزیی زیادی بدست آورید؛ که می تواند سرعت را کم کند. تا جاییکه می توانید همیشه از وقفه های طولانی استفاده کنید، و دقت کنید آیا contact کردن با سرور واقعاً ضروری است یا خیر.

برای یادگیری کامل ASP.NET به لینک زیر رجوع کنید

آموزش ASP.NET








گزارش تخلف
بعدی