وبلاگ های مدیر

  • تعمیر و عیب یابی کامپیوتر

  • دانلود رایگان نرم افزار

  • دانلود اهنگ های بیکلام و آرامبخش

  • کتاب های اموزشی

  • اموزش طراحی بازی


  • اموزش طراحی وب


  • هک و امنیت اطلاعات


  • اموزش طراحی روبات


  • ورود کاربران


    ثبت نام کاربران

    تعداد بازدیدکنندگان

    ** طراح قالب **
    محمد وائلی

    09187653351

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

    برنامه نویسی
  • اموزش html


  • برنامه نویسی ++C


  • برنامه نویسی شی گرا


  • پایگاه داده ها


  • جاوا


  • الگوریتم و فلوچارت


  • ویژوال بیسیک


  • برنامه نویسی دلفی


  • برنامه نویسی C


  • اموزش برنامه نویسیASP.NET


  • اموزش برنامه نویسی # c


  • اموزش طراحی و برنامه نویسی


  • اموزش برنامه نویسی پاسکال


  • [ بدون عنوان ]


  • [ بدون عنوان ]


  • [ بدون عنوان ]


  • [ بدون عنوان ]


  • [ بدون عنوان ]


  • [ بدون عنوان ]


  • [ بدون عنوان ]


  • [ بدون عنوان ]


  • [ بدون عنوان ]


  • [ بدون عنوان ]


  • [ بدون عنوان ]


  • [ بدون عنوان ]


  • [ بدون عنوان ]


  • [ بدون عنوان ]


  • اموزش SQL SERVER


  • اموزش برنامه نویسی متلب Matlab


  • [ بدون عنوان ]


  • اموزش مدل سازی با رشنال رز


  • اموزش سیمولینک متلب


  • [ بدون عنوان ]


  • [ بدون عنوان ]


  • [ بدون عنوان ]


  • [ بدون عنوان ]


  • [ بدون عنوان ]


  •  

    لیست کتاب ها
  • اموزش شبکه های کامپیوتر


  • پایگاه داده ها


  • مهندسی نرم افزار


  • ساختمان داده


  • طراحی الگوریتم


  • مدار های منطقی


  • مهندسی اینترنت


  • سخت افزار


  • مقالات کامپیوتر


  • درس های تخصصی
  • 1 ریاضی علم کامپیوتر


  • 2 ریاضی علم کامپیوتر


  • ریاضی امار مقدماتی


  • زبان تخصصی1


  • زبان تخصصی 2


  • برنامه نویسی مقدماتی


  • دروس عمومی

  • تنظیم خانواده


  • کار آفرینی


  • زبان عمومی


  • ادبیات فارسی


  • معارف


  • اخلاق


  •  
    تماس با مدير وبلاك
  • ادرس ايميل


  • گالری عکس
  •  
  • اموزش برنامه نویسیASP.NET

    خودآموز گام به گام Asp .Net 2.0

    ASP.NET یک چارچوب کاربردی Web است که توسط شرکت مایکروسافت عرضه گردیده تا برنامه نویسان بتوانند برای ساخت سایت های Web و برنامه‌های Web پویا وسرویس های Web پویا وسرویس های Web XML از آن استفاده کنند. این بخشی از زیر ساخت .NET مایکروسافت و جانشینی برای تکنولوژی صفحات سرویس دهنده فعال (ASP) است. ASP مبتنی بر زبانهای مشترک در حال اجرا است که به برنامه نویسان اجازه می‌دهد کدهای ASP را با استفاده از هر زبان Framework.NET بنویسند. کتاب زیر مرجع آموزشی فارسی و کاملی برای این زبان برنامه نویسی پرطرفدار است :

     

    فرمت : pdf
    زبان : فارسی
    حجم : ۸.۰۱ مگابایت
    تعداد صفحات : ۳۵۱ صفحه
    عکس : دارد

     

    اسکرین شات از صفحه ی اول این کتاب :


    کتاب آموزش فارسی asp .net 2.0

    کتاب آموزش فارسی asp .net 2.0


    برای آشکار شدن لینک دانلود روی ادامه ی نوشته کلیک کنید :

    با لینک مستقیم از اینجا دانلود کنید :


    خودآموز گام به گام Asp.Net 2.0







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


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

    IE: در صورت دانلود نشدن کتاب، بر روی دکمه Download راست کلیک کرده و گزینه ...Save Target As را انتخاب کنید.

    Firefox: در صورت دانلود نشدن کتاب، بر روی دکمه Download راست کلیک کرده و گزینه ...Save Link As را انتخاب کنید. 

     


     

    روند کلی برقراری اتصال با دیتابیس
    1-  رشته اتصال ( connection string ) مناسب را تعریف کنید
    2- کلاس مناسب را به برنامه خود وارد ( import ) کنید.
    3-یک شی کانکشن تعریف کنید و رشته اتصال را به سازنده آن پاس کنید.
    4- شی کانکشن را باز کنید.
    5-عملیات مورد نظر را در دیتابیس انجام دهید *
    6- شی کانکشن را ببندید.

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

    چگونه با یک دیتابیس ارتباط برقرار کنیم؟
    هدف ایجاد اتصال به یک بانک اطلاعاتی ، باز کردن اتصال و بستن آن است . بر اساس توضیحات بالا گام به گام پیش می رویم :
    1- تعریف رشته اتصال : برای برقراری ارتباط با اکسس از رشته اتصالی مثل رشته زیر استفاده می کنیم.

    string connectionString ="Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=C:\\database.mdb";

    در رشته اتصال بالا بعد از Data Source آدرس محل قرار گرفتن فایل اکسس خود را مشخص کنید. اگر می خواهید از اس کیو ال سرور استفاده کنید رشته اتصال شما چیزی شبیه به متن زیر خواهد بود :

    string connectionString="server=127.0.0.1;database=
    MY_DATABASE;UID=MY_USERNAME;PWD=MY_PASSWORD
    "

    در رشته اتصال بالا بعد از server نام و یا ip سرور مورد نظر را وارد می کنید. به MY_DATABASE نام دیتابیس و همین طور نام کاربری و کلمه عبور را برای دسترسی به سرور مشخص کنید.

    توجه کنید که رشته های اتصال پارامترهای دیگری هم دارند ولی من ساده ترین مدل را بررسی کردم. برای کسب اطلاعات بیشتر در مورد نحوه نوشتن رشته های اتصال به سایت زیر مراجعه کنید : http://www.connectionstrings.com

    2- اضافه کردن کلاس مناسب به کد صفحه : برای اکسس از System.Data.OleDb استفاده کنید و برای SQL Server از System.Data.SqlClient. اگر از ویژوال استودیو دات نت استفاده می کنید کافی است که آن را به ابتدای کد صفحه اضافه کنید

    using System.Data.OleDb;

    و اگر کدهای دات نتی را در خود صفحه aspx می نویسید در ابتدای صفحه فضا نام مربوط را import  کنید.


    3- تعریف شی کانکشن :  برای ایجاد این شی در صورت استفاده از System.Data.OleDb خواهیم داشت :

    OleDbConnection myConnection=new OleDbConnection ( connectionString );

    و اگر از System.Data.SqlClient استفاده کرده اید مطابق مثال زیر به جای OleDbConnection از SqlConnection استفاده می کنید  :

    SqlConnection myConnection = new SqlConnection( connectionString );

    4- باز کردن شی کانکشن : این کار را به کمک متد Open شی کانکشن تعریف شده انجام می دهیم :

    myConnection.Open ();

    5- انجام عملیات مورد نظر در دیتابیس : در این یادداشت ما هیچ اضافه ، حذف یا ویرایشی را در دیتابیس انجام نمی دهیم.
    6 - بستن شی کانکشن : این کار به کمک متد Close انجام می شود.

    myConnection.Close ();

    این پروژه را به کمک ویژوال استودیو باز کنید ، در کد صفحه WebForm1.aspx مقدار رشته اتصال را بر اساس دیتابیس خود ست کنید. پروژه را مجددا کامپایل و اجرا کنید. در این کد از ساختار Try/Catch استفاده کرده ام ( توضیحات بیشتر در مورد ساختارهای مدیریت استثنا در سی شارپ را در این مقاله بخوانید ) همچنین قبل از بستن کانکشن، به کمک یک عبارت شرطی باز بودن آن را چک می کنم. 

     

     


     

     

    قسمت دوم 

     

    در بخش اول با روش برقراری اتصال با پایگاه داده در ASP.NET آشنا شدید. در این یادداشت با استفاده از یک جدول نمونه ، عملیات اضافه کردن رکورد به دیتابیس را بررسی می کنیم. برای این کار هر دو روش عادی و استفاده از Stored Procedure را پیاده سازی می کنیم. اگر مطالب این یادداشت را به دقت مطالعه و تمرین کنید قادر خواهید بود تا عملیات معمول بانک های اطلاعاتی ( اضافه ، ویرایش و حذف ) را در برنامه های وبی خود انجام دهید چرا که تنها تفاوت این کارها در دستور SQL آنهاست.

    افزودن رکورد به بانک اطلاعاتی

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

    گام اول. ساختن دیتابیس و جدول

    یک دیتابیس جدید به نام TestDb در SQL Server بسازید. حالا یک جدول به نام Members ایجاد کنید. کد سازنده این جدول را در زیر می بینید ( می توانید اسکریپت ساخت جدول را از اینجا دانلود کنید و پس از ساختن دیتابیس از طریق Query Analyzer آن را اجرا کنید تا جدول را برای شما بسازد )

    CREATE TABLE [Members] (
    [UserID] [smallint] NOT NULL ,
    [Username] [varchar] (10) NOT NULL ,
    [Password] [varchar] (20) NOT NULL ,
    [Email] [varchar] (50) NOT NULL ,
    CONSTRAINT [PK_Members] PRIMARY KEY CLUSTERED
    (
    [UserID]
    ) ON [PRIMARY]
    ) ON [PRIMARY]
    Go

    گام دوم. تعریف پروژه جدید در ویژوال استودیو

    یک پروژه Web Application را در ویژوال استودیو ایجاد کنید. نکته ای که امروز می خواهم به آن اشاره کنم ذخیره کردن رشته اتصال در فایل web.config است. برای این کار کد زیر را به این فایل اضافه کنید ( این کد داخل بلاک  نباشد )


    به جای YOUR CONNECTION STRING رشته اتصال خود را قرار دهید ( در مورد رشته اتصال در یادداشت قبلی مفصل صحبت کردم )حالا می توانید در هر صفحه ای به کمک کد زیر رشته اتصال ذخیره شده را بازیابی کنید :

     string ConnectionString=ConfigurationSettings.AppSettings["connectionstring"];

     

    برای کسب اطلاعات بیشتر در مورد ذخیره کردن رشته اتصال در web.config این مقاله فارسی را بخوانید : ذخیره کردن Connection String در فایل Web.Config

    توصیه امنیتی : هر زمان که رشته اتصال خود را به این شکل در web.config ذخیره می کنید بهتر است برای افزایش ایمنی آن را به صورت رمز شده ذخیره کنید. برای اطلاع از چگونگی رمز کردن اطلاعات مقاله فارسی زیر را مطالعه کنید : به رمز درآوردن اطلاعات

    گام سوم. نوشتن کد صفحه

    در این صفحه ما به سه عدد TextBox به نام های txtUsername و txtPassword و txtEmail نیاز داریم. یک دکمه هم برای ارسال فرم در نظر می گیرم به نام btnAdd . کد اضافه شدن اطلاعات فرم به بانک اطلاعاتی را در رویداد کلیک این دکمه می نویسیم. این کد را در زیر مشاهده می کنید :

    private void btnAdd_Click(object sender, System.EventArgs e)
    {
            string connectionstring=ConfigurationSettings.AppSettings["connectionstring"];
            string cText="Insert Into Members (Username,Password,Email ) Values  (@Username,@Password,@Email)";
           SqlConnection con=new SqlConnection (connectionstring);
           SqlCommand cmd=new SqlCommand (cText,con);
           cmd.Parameters.Add ("@Username",txtUsername.Text );
           cmd.Parameters.Add ("@Password",txtPassword.Text );
           cmd.Parameters.Add ("@Email",txtEmail.Text );
           con.Open ();
            cmd.ExecuteNonQuery ();
           con.Close ();
    }

    فراموش نکنید که Namespace های مورد نیاز را به صفحه اضافه کنید. همان طور که می بینید دستور SQL را مستقیما در کد خود نوشتیم و از طریق پارامترها آن را تکمیل کردیم. دقت کنید که متد Add مربوط به پارامترهای یک شی دستور به چند شکل دیگر هم قابل استفاده است ( مثلا می توانید نوع فیلد جدول یا سایز آن را مشخص کنید ) و این ساده ترین شکل استفاده از این متد است.

    نکته برنامه نویسی : ممکن است با این روش نتوانید اطلاعات را به فارسی در دیتابیس خود ذخیره کنید. خوشبختانه آقای نوعی پور یادداشت مفصلی در این مورد نوشته است که مشکل ورود اطلاعات فارسی و راه حل آن را به طور کامل بررسی می کند. این یادداشت را می توانید از اینجا بخوانید : پاسخ به یک پرسش متداول برنامه‌نویسان مبتدی ASP.NET : فارسی در SQL Server  

    نکته امنیتی : در یک سیستم واقعی کلمه عبور را قبل از اضافه کردن به دیتابیس رمز کنید تا در صورتی که هکر به دیتابیس دسترسی پیدا کرد نتواند کلمات عبور کاربران سیستم را پیدا کند. مطمئن ترین روش Hash کردن کلمات عبور است. در این مورد به زودی مطلبی خواهم نوشت.

    استفاده از Stored Procedure

    همان طور که در ابتدای این یادداشت ها هم گفتم پیش فرض من این است که شما مفاهیم اصلی مربوط به کار با پایگاه داده و از جمله زبان SQL را می دانید. استفاده از روال های ذخیره شده کارآیی و سرعت سیستم را بالا می برد. وقتی یک روال ذخیره شده را در دیتابیس قرار می دهیم برای مراجعات بعدی دیگر پارسر و کامپایلر آن را بررسی نمی کنند و از نسخه کامپایل شده بهینه آن استفاده می کنند. به علاوه با کمک Transact-SQL می توانیم رویه های ذخیره شده پیشرفته ای را بنویسیم یا مثلا یک سری دستور را به صورت گروهی اجرا کنیم.

    برای مثالی که در این یادداشت با آن روبرو بودیم Stored Procedure زیر که همان کار افزودن رکورد را انجام می دهد می نویسیم ( این روال را از طریق Query Analyzer در دیتابیس TestDb  اجرا کنید تا به مجموعه روال های ذخیره شده این دیتابیس اضافه شود )

    Create Procedure InsertProc
    (
       @Username varchar(
    10),
       @Password varchar (
    20),
       @Email varchar (
    50)
    )
    As
    Insert
    Into Members (Username,Password,Email ) Values (@Username,@Password,@Email)

    حالا برای این که عملیات را با استفاده از این روال ذخیره شده انجام دهیم شی دستور SQL را به صورت زیر بازنویسی می کنیم ( قسمت های Bold شده را نگاه کنید ) :

    private void btnAdd_Click(object sender, System.EventArgs e)
    {
    .....
    SqlCommand cmd=new SqlCommand ();
    cmd.CommandType=System.Data.CommandType.StoredProcedure;
    cmd.CommandText="InsertProc";
    cmd.Parameters.Add ("@Username",txtUsername.Text );
    ....
    }

    در این روش دیگر نیازی به تعریف  cText ( همان دستور SQL ) نداریم چرا که این دستور را در داخل رویه ذخیره شده خود نوشته ایم. همان طور که می بینید ابتدا Type دستور را مشخص کردیم و سپس نام رویه ذخیره شده خود را به ویژگی CommandText شی دستور نسبت دادیم.

    دانلود فایل پروژه : برای استفاده از این پروژه بعد از ساخت دیتابیس و جدول مربوطه، در فایل  Web.Config رشته اتصال خود را به جای عبارت YOUR CONNECTION STRING  قرار دهید ( توضیحات گام دوم را بخوانید ). سپس پروژه را کامپایل و اجرا کنید.



     

    قسمت اول
    خلاصه :

    درحالیکه تمامی کنترلهای سرور ASP.NET کارایی سمت سرور دارند (Server-Side)، اغلب توانایی یک کنترل میتواند با تزریق اسکریپت های سمت کاربر ارتقا داده شود. در این مقاله دو راه برای اضافه کردن اسکریپت های سمت کاربر به یک کنترل سمت سرور آزمایش میشود و با استفاده از این دو روش دو کنترل سمت سرور با نامهای PopupGreeting و ConfirmButton ساخته خواهد شد.

    PopupGreeting : یک کنترل سمت سرور است و زمانی که صفحه برای اولین بار لود می شود، یک جعبه محاوره ای (DialogBox) با یک پیغام خاص را نمایش میدهد.

    ConfirmButton : یک کنترل Button توسعه یافته است که زمانی که کلیک میشود، قبل از اینکه صفحه PostBack  کند، به کاربر توسط یک Confirm جاوااسکریپت هشدار میدهد.

    مقدمه :

    درحالیکه تمامی کنترلهای سرور ASP.NET کارایی سمت سرور دارند (Server-Side)، اغلب توانایی یک کنترل میتواند با تزریق اسکریپت های سمت کاربر ارتقا داده شود. بعنوان مثال میتوان به کنترلهای اعتبارسنجی (Validation Controls) ، اشاره نمود که از اسکریپتهای سمت کاربر به نحو احسن استفاده میکنند.

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

    • Client-Side Script Blocks

    • Client-Side HTML Attributes

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

    برای فهم بهتر دو روش فوق به مثال ساده زیر توجه کنید :

    صفحه HTML زیر شامل یک بلوک اسکریپت سمت کاربر ( بنام doClick ) و یک Button می باشد (که توسط <input> ساخته شده است) و زمانیکه کاربر روی این دکمه کلیک میکند، تابع doClick در سمت کاربر اجرا میشود.

    <html>
      <body>
        <form>
          <script language="JavaScript">
          <!--
             function doClick() {
                alert("You clicked me!");
             }
          // -->
          </script>
          <input type="button" onclick="doClick()" value="Click Me!" />
        </form>
      </body>
    </html>

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

    • بلوک اسکریپت در بین تگ های توضیحات HTML قرار گرفته است. دلیل این امر این است که در مرورگرهای خیلی قدیمی که قادر به اجرای کدهای جاوااسکریپت نیستند به جای اجرای کدها، متن کدها را روی صفحه نمایش می دهند. برای جلوگیری از این مورد، کد اسکریپت را بین دو توضیحات قرار داده ایم تا در صورتی که مرورگر کاربر نتوانست این کدها را کامپایل کند، متن کدها بصورت توضیحات درنظر گرفته شود و روی صفحه نمایش داده نشود. (میتوانستیم با دستورات جاوا اسکریپت هم این موضوع را بررسی کنیم)

    • تابع جاوا اسکریپت alert یک جعبه گفتگو ( Dialog Box ) را روی صفحه به کاربر نمایش می دهد.

    • عناصر HTML اغلب دارای یک سری خصوصیات سمت کاربر هستند مانند : onClick و onMouseOver و ..که میتوانند به توابع خاصی assign شوند تا در موقع رخداد این خصوصیت در سمت کاربر، آن تابع اجرا شود. بعنوان مثال در کد فوق خصوصیت onClick عنصر input به تابع doClick ، اشاره داده شده است. بنابراین با کلیک کردن روی این دکمه باید تابع doClick اجرا شود و یک Dialog Box را روی صفحه نمایش دهد.

    توضیحات : یک لیست از رخدادهای جاوااسکریپت و خصوصیات HTML را میتوانید در مقاله Introduction To Dynamic HTML پیدا کنید. برای کسب اطلاعات بیشتر در مورد کدهای سمت کاربر جاوااسکریپت به مقاله HTML and Dynamic HTML مراجعه کنید.

    در ایم مقاله ما هر دو روش استفاده از بلوک های اسکریپت سمت کاربر ( Client-Side Script Blocks ) و خصوصیات یک عنصر (HTML Element Attribute ) را در یک سرور کنترل ASP.NET را بررسی می کنیم.

    ابتدا اجازه دهید تا نگاهی به دو متد از کلاس System.Web.UI.Page بیندازیم :

    • RegisterStartupScript

    • RegisterClientScriptBlock

    در ادامه ابتدا یک سرور کنترل ساده می سازیم که یک Dialog Box سمت کاربر را زمانی که صفحه لود می شود، به کاربر نمایش دهد. بعد از آن توجه شما را به اضافع کردن خصوصیات HTML به یک عنصر HTML ، در هنگام Render شدن این کنترل در سمت سرور جلب می کنم.

     

    • اضافه کردن بلوک های اسکریپت سمت کاربر توسط متدهای RegisterStartupScript و RegisterClientScriptBlock

    کلاس System.Web.UI.Page شامل دو متد ارزشمند برای اضافه کردن کدهای اسکریپت سمت کاربر به صفحات ASP.NET کامپایل شده می باشد که عبارتند از :

    • RegisterStartupScript (key, script)

    • RegisterClientScriptBlock (key, script)

    هر دوی این متدها دو رشته بعنوان ورودی میگیرند. دومین پارامتر ( script )، شامل کد اسکریپت سمت کاربر موردنظر همراه با تگهای شروع و پایان اسکریپت می باشد که باید در صفحه اضافه شود. پارامتر اول ( key )، یک کلید منحصربفرد برای اسکریپت موردنظر است.

    تفاوت بین این دو متد در مکانی است که اسکریپت درج می شود. متد RegisterClientScriptBlock اسکریپت موردنظر خود را در ابتدای صفحه درست پس از تگ <form runat=server> قرار میدهد. در حالیکه متد RegisterStartupScript ، اسکریپت موردنظر خود را در انتهای صفحه، درست قبل از تگ <form/> قرار میدهد.

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

    کد شماره یک :

    1 :  <input type="text" id="myTextBox" />
    2 :  <script language="JavaScript">
    3 :  <!--
    4 :     document.getElementById("myTextBox").focus();
    5 :  // -->
    6 :  </script>

     

    کد شماره دو :

    7   :  <script language="JavaScript">
    8   :  <!--
    9   :     document.getElementById("myTextBox").focus();
    10 :  // -->
    11 :  </script>
    12 :  <input type="text" id="myTextBox" />

    هدف هردوی این کدها این است که Focus صفحه را روی عنصر myTextBox ببرند، ولی تنها کد شماره یک درست کار میکند و کد شماره دو کار نمی کند. علت این است که چون کد صفحه خط به خط تفسیر می شود لذا زمانی که مفسر ( Interpreter ) به خط شماره 9 میرسد، هنوز عنصر HTML ای بنام myTextBox وجود ندارد، بنابراین خصوصیتی هم برای آن ست نخواهد شد. در حالیکه در کد اول مشکلی وجود ندارد.

    بنابراین در مواردی که کد اسکریپت موردنظر ما برای Page_Load طراحی شده باشد، باید توسط متد RegisterStartupScript به کد HTML صفحه اضافه شود تا در انتهای کدهای صفحه قرار بگیرد (تا مطمئن باشیم که تمامی عناصر HTML صفحه، ایجاد شده اند). ولی در مواردی که اسکریپت موردنظر ما برای رویداد خاصی در سمت کاربر (مانند کلیک کردن یک دکمه) طراحی شده است، باید از متد RegisterClientScriptBlock استفاده شود، تا اسکریپت در ابتدای صفحه HTML درج شود. مانند اولین مثالی که در ابتدای همین مقاله مشاهده کردید. (اسکریپت مربوط به تابع doClick ، در ابتدای صفحه و قبل از تمامی عناصر HTML درج شده است)

    متد RegisterStartupScript ، اسکریپت موردنظر خود را در انتهای صفحه درج می کند و در اسکریپت هایی که برای Page_Load طراحی شده اند مناسب است. در حالیکه متد RegisterClientScriptBlock اسکریپت موردنظر خود را در ابتدای صفحه درج می کند و برای اسکریپت هایی مناسب است که برای رخدادهای سمت کاربر، طراحی شده اند.

    در ادامه بحث و در قسمت دوم این مقاله، با استفاده از متدهای RegisterStartupScript و RegisterClientScriptBlock دو سرور کنترلی که در ابتدای همین مقاله وعده داده شد، را طراحی خواهیم نمود. 

     


     

     

    ذخیره تصاویر در SQL SERVER 

     

    مرور راه حل

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

    - الگوی بانک اطلاعاتی مورد استفاده : مایکروسافت SQL Server 2000 را به عنوان بانک اطلاعاتی استفاده می کنیم، من از نوع داده ای image استفاده خواهم کرد. نوع داده ای image برای ذخیره کردن تصاویر در بانک اطلاعاتی استفاده می شود.

    - کنترل هایی که در این برنامه از آن ها استفاده می کنیم عبارتند از :
    System.Web.UI.HtmlControls.HtmlInputFile و System.Web.UI.WebControls.TextBox و System.Web.UI.WebControls.Button

    -و فضا نام هایی که در این برنامه از آن ها استفاده می کنیم عبارتند از: System.Data.SqlClient و System.Drawing و System.Data و System.IO و System.Drawing.Imaging

    راه حل همراه با کد

    از کلاس HtmlInputFile  برای ساختن کنترل آپلود فایل استفاده می کنیم. مثال زیر یک فایل ASPX کامل است که به کاربر این امکان را می دهد که یک تصویر و توضیح آن را آپلود و به بانک اطلاعاتی اضافه کند . متد OnUpload تصویر و توضیح آن را در یک جدول بانک اطلاعاتی SQL Server به نام Pictures در دیتابیس MyData اضافه می کند.

    // سورس کد ذخیره تصویر در بانک اطلاعاتی

    public void OnUpload(Object sender, EventArgs e)
    {
        //
    ساختن یک byte[] از فایل ورودی
        int len = Upload.PostedFile.ContentLength;
        byte[] pic = new byte[len];
        Upload.PostedFile.InputStream.Read (pic, 0, len);

        //
    افزودن تصویر و توضیح تصویر به بانک اطلاعاتی
        SqlConnection connection = new
          SqlConnection (@"server=127.0.0.1;database=MyData;uid=sa;pwd=yourpass");
        try
        {
            connection.Open ();
            SqlCommand cmd = new SqlCommand ("insert into Image "
              + "(Picture, Comment) values (@pic, @text)", connection);
            cmd.Parameters.Add ("@pic", pic);
            cmd.Parameters.Add ("@text", Comment.Text);
            cmd.ExecuteNonQuery ();
        }
        finally
        {
            connection.Close ();
        }
    }

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

    چگونه می توانم یک تصویر را از دیتابیس خوانده و در صفحه وب نمایش دهم؟

    اینجا من از یک صفحه وب برای نمایش تصویر استفاده کرده ام، کد زیر برای نمایش تصویر در صفحه وب استفاده می شود

    private void Page_Load(object sender, System.EventArgs e)
    {
        MemoryStream stream = new MemoryStream ();
        SqlConnection connection = new
          SqlConnection (@"server=127.0.0.1;database=MyData;uid=sa;pwd=yourpass");
        try
        {
            connection.Open ();
            SqlCommand command = new
              SqlCommand ("select Picture from Image", connection);
            byte[] image = (byte[]) command.ExecuteScalar ();  
            stream.Write (image, 0, image.Length);
            Bitmap bitmap = new Bitmap (stream);
            Response.ContentType = "image/gif";
            bitmap.Save (Response.OutputStream, ImageFormat.Gif);
        }
        finally
        {
            connection.Close ();
            stream.Close ();
        }
    }

    توابع GDI+ ویژگی های پیشرفته زیادی برای مدیریت و دستکاری داده های تصویری پیشنهاد می کنند. مثال این مقاله نگاه سریعی به کارهایی که از طریق فضا نام های System.Drawing.Imaging  و  System.Drawing  می توانید انجام دهید دارد. به عنوان مثال شما می توانید برنامه را برای ذخیره و مدیریت تصاویر بر روی وب گسترش دهید یا می توانید یک برنامه ساده بنویسید که به کاربر امکان ویرایش و دستکاری تصاویر را می دهد.

    چگونه از این کدها استفاده کنیم؟

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

     


     

    دستیابی و بهنگام سازی داده در ASP.NET 2.0  (بخش اول) در زمان استفاده از یک بانک اطلاعاتی به عنوان یک منبع اطلاعاتی برای صفحات وب ، می بایست مراحل زیر را دنبال نمود :

    • مشخص نمودن مسیر ذخیره بانک اطلاعاتی
    • مشخص نمودن درایور نرم افزاری که از آن برای دستیابی به بانک اطلاعاتی استفاده می گردد.
    • باز کردن ( open )  بانک اطلاعاتی
    • صدور یک عبارت SQL برای بازیابی فیلدهائی از داده موجود در جداول بانک اطلاعاتی
    • بازیابی و نمایش رکوردهای برگردانده شده بر روی صفحات وب
    • بستن ( close )  ارتباط ایجاد شده با بانک اطلاعاتی

    قبل از ASP.NET 2.0 ، تمامی مراحل فوق با نوشتن اسکریپت انجام و اطلاعات موجود در بانک های اطلاعاتی پس از بازیابی بر روی صفحات وب نمایش داده می شد . در  ASP.NET 2.0  اکثر مراحل فوق به صورت اتوماتیک و با بکارگیری کنترل های منبع داده انجام می شود .
    کنترل های منبع داده یکی از مهمترین امکانات جدید ارائه شده در
    ASP.NET 2.0 می باشند . این نوع کنترل ها ، مجموعه ای از کنترل های سرویس دهنده می باشند که با هدف ارائه یک رویکرد تعریفی به منظور دستیابی و تغییر داده در منابع داده نظیر بانک های اطلاعاتی طراحی شده اند . با استفاده از کنترل های منبع داده می توان بدون نیاز به نوشتن  جحم بالائی از کد به داده دستیابی داشت .  در مقایسه با ASP.NET 1.x ، نیازی به تکرار کد مورد نیاز به منظور دستیابی به داده نخواهیم داشت . مثلا" در ASP.NET 1.x برای نمایش محتویات یک بانک اطلاعاتی بر روی یک صفحه وب ، می بایست کد لازم به منظور تامین اهداف زیر نوشته گردد :

    • ارتباط با بانک اطلاعاتی
    • تعریف و صدور یک دستور
    • بازیابی نتایج 
    • کار با نتایج و در صورت ضرورت نسبت دهی آنان به یک کنترل سرویس دهنده نمایش داده نظیر GridView

    در ASP.NET 2.0 با حداقل کد می توان عملیات فوق را انجام داد .
    در این مقاله به بررسی دو کنترل مهم منبع داده  AccessDataSource و SqlDataSource خواهیم پرداخت . با استفاده از کنترل های فوق می توان با مشخص نمودن SELECT query به همراه هر نوع پارامتر در WHERE clause (به عنوان خصلت های کنترل های منبع داده ) ، امکان بازیابی رکوردهائی خاص از یک بانک اطلاعاتی را فراهم نمود .
    کد مورد نیاز برای اتصال به بانک اطلاعاتی  ، صدور دستور و بازیابی نتایج  بدون درگیر شدن پیاده کننده صفحات وب توسط کنترل های منبع داده انجام می شود .
    با استفاده از رویکرد تعریفی  کنترل های منبع داده ، می توان در حداقل زمان ممکن صفحه ای را ایجاد نمود که داده موجود در بانک های اطلاعاتی را  نمایش دهد .

    دستیابی به داده بانک های اطلاعاتی ASP.NET 2.0 ، دو کنترل منبع داده خاص را به منظور دستیابی به داده موجود در یک بانک اطلاعاتی ارائه نموده است :

    • SqlDataSource : از کنترل فوق برای دستیابی به هر نوع بانک اطلاعاتی رابطه ای می توان استفاده نمود . پیشوند "Sql" در نام کنترل فوق به SQL Server مایکروسافت مربوط نمی شود و بیشتر منظور بانک های اطلاعاتی است که با استفاده از عبارات SQL می توان با آنان سخن گفت و اطلاعاتی را از آنان بازیابی نمود . از کنترل فوق علاوه بر این که می توان به منظور دستیابی به بانک های اطلاعاتی SQL Server ، اکسس و یا اوراکل استفاده نمود ، همچنین می توان از آن برای دستیابی به هر  نوع منبع داده سازگار با ODBC و یا OLE-DB نیز استفاده نمود .

    • AccessDataSource : کنترل فوق شباهت زیادی با کنترل SqlDataSource دارد . مهمترین تفاوت این دو کنترل نحوه اتصال به یک بانک اطلاعاتی است ( استفاده از یک onnection string  در مقابل مشخص نمودن مسیر ذخیره بانک اطلاعاتی) . با استفاده از کنترل AccessDataSource ، می توان مسیر ذخیره یک بانک اطلاعاتی اکسس ( فایل های با انشعاب mdb . ) را مشخص و آن را به خصلت DataFile کنترل نسبت داد .

    هر دو کنترل فوق از لحاظ منطقی دارای ویژگی های یکسانی می باشند و تنها تفاوت آنان نحوه مشخص کردن اطلاعات مورد  نیاز جهت ارتباط با یک  بانک اطلاعاتی است .شاید به نظر وجود  کنترل ‌AccessDataSource غیر ضروری‌ باشد چراکه با استفاده از کنترل SqlDataSource می توان به سادگی به یک بانک اطلاعاتی اکسس دستیابی داشت . ( ویژوال استودیو 2005 به صورت اتوماتیک Connection String مناسب برای بانک اطلاعاتی ذخیره شده در فولدر App_Data را ایجاد نماید ) .
    از دو کنترل فوق می توان به منظور دستیابی و ویرایش داده استفاده نمود .
    در ادامه به منظور آشنائی با نحوه عملکرد کنترل های AccessDataSource  و SqlDataSource مراحل زیر را دنبال خواهیم کرد :

    • مرحله اول       : ایجاد یک وب سایت با استفاده از ویژوال استودیو 2005
    • مرحله دوم      : ایجاد یک بانک اطلاعاتی ( اکسس و یا SQL )
    • مرحله سوم    : ایجاد یک صفحه جدید
    • مرحله چهارم  : استفاده از یک کنترل منبع داده ( AccessDataSource و یا SqlDataSource ) و پیکربندی آن با استفاده از برنامه کمکی ( ویزارد ) مربوطه

    • مرحله پنجم    : استفاده از یک کنترل سرویس دهنده نمایش اطلاعات ( نظیر GridView ) و پیکربندی آن با استفاده از برنامه کمکی مربوطه

    مرحله اول : ایجاد یک وب سایت با استفاده از ویژوال استودیو دات نت 2005  در مقاله " ایجاد یک وب سایت با استفاده از ویژوال استودیو 2005 " با نحوه ایجاد یک وب سایت آشنا شدیم . یکی از مطالبی که در این مقاله به آن اشاره نگردید ، جایگاه فولدر App_Data در  وب سایت ایجاد شده توسط ویژوال استودیو 2005 است .
    ASP.NET 2.0
    در زمان ایجاد یک وب سایت ،‌ یک فولدر جدید و با نام App_Data را ایجاد می نماید . در فولدر فوق می توان فایل های مورد نیاز برای ذخیره سازی داده را ذخیره نمود . فایل های Xml ( فایل هائی با انشعاب xml. ) ، فایل های بانک اطلاعاتی اکسس ( فایل هائی با انشعاب mdb . ) و فایل های سرویس دهنده SQL ( فایل هائی با انشعاب mdf . ) نمونه هائی در این زمینه می باشند ( ASP.NET می تواند با بانک های اطلاعاتی که در فولدر فوق ذخیره نشده اند نیز کار کند ) .
    صرفنظر از مکانی که یک بانک اطلاعاتی ذخیره شده است ، می توان از کنترل های منبع داده AccessDataSource  و یا SqlDataSource جهت ارتباط با آنان استفاده نمود.
    برای آشنائی با نحوه ایجاد یک وب سایت با استفاده از ویژوال استودیو 2005 مطالعه مقاله " ایجاد یک وب سایت با استفاده از ویژوال استودیو 2005 "  ( بخش اول  و دوم )  توصیه می گردد .
    در ادامه فرض می کنیم که یک وب سایت جدید ایجاد شده است . شکل زیر ساختار فایل ها و فولدرهای یک وب سایت جدید را نشان می دهد  .
     

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

     
    مرحله دوم : ایجاد یک بانک اطلاعاتی  ( و یا استفاده از یک بانک اطلاعاتی موجود ) در این مرحله از یک بانک اطلاعاتی اکسس که قبلا" ایجاد شده است ( با نام Maghalat.mdb ) ، استفاده کرده و آن را به وب سایت جدید اضافه می نمائیم . بدین منظور پس از قرار گرفتن بر روی فولدر App_Data ، کلیک سمت راست نموده و گزینه Add Existing Item را انتخاب نموده و پس از مشخص کردن مسیر بانک اطلاعاتی ، آن را به وب سایت اضافه می نمائیم .

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


    بانک اطلاعاتی Maghalat.mdb دارای سه جدول با نام Articles ، Authors و Artilcles_Category است :

    جداول بانک اطلاعاتی

    مرحله سوم : ایجاد یک صفحه جدید در این مرحله پس از استقرار بر روی وب سایت جدید ( از طریق Soulution Explorer ) و فعال کردن موس (کلیک سمت راست ) با انتخاب گزینه Add New Item  و در ادامه انتخاب Web Form و مشخص نمودن نام صفحه جدید ( AccessToDataBase.aspx ) آن را به وب سایت اضافه می نمائیم .
     

    یک صفحه وب جدید ایجاد شده

    مرحله چهارم : استفاده از یک کنترل منبع داده ( AccessDataSource و یا SqlDataSource ) و پیکربندی آن با استفاده از برنامه کمکی ( ویزارد ) در این مرحله به منظور دستیابی به بانک اطلاعاتی maghalat.mdb ،  یک کنترل منبع داده SqlDataSource را از طریق Toolbox ( بخش Data ) انتخاب کرده و آن را بر روی صفحه جدید ایجاد شده ( AccessToDataBase.aspx  ) مستقر می نمائیم .

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

    پس از استقرار یک کنترل منبع داده SqlDataSource ، یک جعبه کوچک خاکستری در کنار آن نمایش داده می شود .

    پیکربندی کنترل منبع داده

    برای دستیابی صحیح به داده ، می بایست مجموعه ای از خصلت های SqlDataSource را تنظیم نمود ( بانک اطلاعاتی و query مورد نظری است که قصد اجرای آن را داریم ) . با این که می توان تنظیم خصلت های فوق را با استفاده از Properties pane انجام داد ولی با استفاده از ویزاردی که در کنار کنترل و توسط لینک Configure Data Source فعال می گردند، این کار سریعتر انجام می شود .
    در بخش دوم ، نحوه پیکربندی کنترل منبع داده SqlDataSource  و استقرار و پیکربندی یک کنترل نمایش داده نظیر GridView  به منظور نمایش اطلاعات را بررسی خواهیم کرد .


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