تبليغاتX
web كامپيوتر نرم افزار ,طراحی وب
قطعا در بسیاری از Applicationها برای شما مواردی پیش آمده است که نیاز داشته‌اید صفحه‌ای خاص را در یک پنجره Popup باز کنید. اما آیا راهی برای انجام این کار با استفاده از کدنویسی در Code Behind وجود دارد؟ پاسخ مثبت است.
قطعا در بسیاری از Applicationهای شما مواردی پیش آمده است که شما نیاز داشتید صفحه‌ای خاص را در یک پنجره Popup باز کنید. این کار به سادگی با استفاده از یک خط کدنویسی ساده جاوا اسکریپت امکان پذیر است. حتی در صورتی که فایلی که کد جاوا اسکریپت شما در آن قرار می گیرد یک فایل Server Side باشد نیز به علت اینکه در تمامی زبانهای Server Side پیش از ASP.NET کلیه کدها به صورت Block Script و لابلای کدهای HTML قرار می گرفت منعی در استفاده از بلاکهای جاوا اسکریپت نیز وجود نداشت. با ظهور ASP.NET و قابلیت قدرتمند آن یعنی Code Behind برنامه نویسان از کلنجار رفتن با کدهای تو در توی طولانی رها شده و کلیه کدهای Server Side خود را در Code Behind می نویسند و حاصل کار آنها یک فایل aspx. است که در آن اثری از کدنویسی غیر از تگهای HTML (و تگهای توسعه یافته ASP.NET) دیده نمی‌شود. حال اگر شما بخواهید یک Popup باز کنید چه می‌کنید؟ آیا تابع جاوا اسکریپت بازکننده Popup را لابلای کدهای HTML صفحه خود می‌نویسید؟ این روش به نظر صحیح نمی آید. چرا که ما خود را از قابلیت خوانانویسی کدهای HTML محروم کرده و باز قسمتی از برنامه نویسی خود را به درون فایل اصلی خود انتقال داده‌ایم. چه می توان کرد؟ آیا راهی برای اینکه ما با استفاده از کدنویسی در Code Behind یک Popup باز کنیم هست؟ پاسخ مثبت است. در ادامه مقاله به این موضوع می پردازیم: در این روش در واقع ما کدهای جاوا اسکریپت خود را به صورت یک attribute به کنترل مورد نظر خود Add می کنیم. اما برای اینکه برای هر کنترل کدنویسی را تکرار نکنیم این قسمت را درون یک ساب روتین قرار می دهیم:


using System.Web.UI.WebControls;

public void OpenPopUp(WebControl opener, string PagePath) {

string clientScript;
clientScript = ''window.open(''' + PagePath + ''')'';
opener.Attributes.Add(''OnClick'', clientScript);
}

طرز کار بسیار ساده است! مقادیر ورودی یک کنترل و صفحه‌ای است که باید باز شود. کد جاوا اسکریپت در یک متغیر رشته‌ای به نام clinetString قرار داده می‌شود و با استفاده از متد Add به کنترل اضافه می‌شود. متد Add دو مقدار دریافت می‌کند: ابتدا نام property و یا event و سپس مقدار آن که پس از Generate شدن صفحه به تگ HTML تولید شده اضافه می‌شود.

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


OpenPopup(Button1, ''http://www.google.com'');

که در آن Butoon1 یک کنترل از نوع asp:button است. طرز کار بدین صورت است که پنجره بلافاصله پس از فراخوانی روتین باز نمی‌شود بلکه کنترل شما را برای رویداد مورد نظر تنظیم می‌کند و در هنگام وقوع رویداد (مثلا کلیک کردن روی دکمه) روتین اجرا می‌شود.

با کمی کدنویسی اضافه می‌توان ظاهر پنجره باز شده را نیز کنترل کرد. برای مثال شما می توانید طول و عرض پنجره، عنوان آن، اسکرول بار و... را تنظیم کنید:


public shared void OpenPopUp(WebControl opener, string PagePath,
string windowName, int width, int height) {

string windowAttribs;
string clientScript ;

windowAttribs = ''width='' + width + ''px,'' + ''height='' + height + ''px,''
''left='+((screen.width -'' & width & '') / 2)+','' +
''top='+ (screen.height - '' & height & '') / 2+''';

clientScript = ''window.open(''' + PagePath + ''',''' + windowName + ''',''' +
windowAttribs + '''); return false;'';

opener.Attributes.Add(''OnClick'', clientScript);
}

مزیت استفاده از این روش این است که به علت اینکه شما این تابع را یک بار و آن هم در کلاس و یا Code Behind قرار می‌دهید می‌توانید به راحتی خطاهای برنامه نویسی خود را قبل از اینکه اجرای کد خود را آغاز نمایید، پیدا کنید.
نوشته شده توسط محمد در دوشنبه شانزدهم دی 1387 |
در این مقاله سعی شده به اختصار درباره خصوصیتها، متدها و نحوه کار با شیئ DataView اطلاعاتی ارائه شود.
یکی از اعمال مورد نیاز در کار با داده‌های یک بانک اطلاعاتی، جستجو، مرتب سازی و فیلتر کردن داده‌ها بر حسب نیازمندیهای برنامه کاربردی می باشد. در ADO.NET برای انجام این اعمال روی داده‌ها در یک DataTable دو روش وجود دارد: یکی استفاده از متد Select از شیئ DataTable و دیگری استفاده از شی DataView. شیئ DataView دارای توانایی بیشتری نسبت به متد Select از شیئ DataTable می‌باشد و کار با آن نیز ساده‌تر است. در این مقاله سعی شده به اختصار درباره خصوصیتها، متدها و نحوه کار با شیئ DataView اطلاعاتی ارائه شود.

شیئ DataView به مانند یک منبع برای اتصال کنترلهای دیگر به آن مورد استفاده قرار می گیرد. این شیئ نمایی از یک شیئ DataTable می‌باشد که برای جستجو، فیلتر، مرتب سازی و حتی دستکاری داده‌های آن شیئ DataTable مورد استفاده قرار می‌گیرد. هر شیئ DataView شامل یک مجموعه DataRowView می باشد که مشابه شیئ DataRow در DataTable هستند. این اشیاء دارای ویژگیهایی هستند که در زیر به اختصار توضیح داده شده‌اند:

DataView: شیئ DataView که سطر جاری به آن تعلق دارد را بر میگرداند.
Item: مقدار یک ستون از سطر فعلی را بر میگرداند.
Row: شیئ DataRow که در حال حاضر در حال بررسی است را بر میگرداند.


اشیاء DataView در داخل یک شیئ دیگر به نام DataViewManager قرار می گیرند. رابطه بین این دو شیئ مانند رابطه بین DataTable و DataSet می باشد. با این تفاوت که امکان دارد یک شیئ DataTable دارای چند شیئ DataView باشد که برای انجام جستجو و فیلتراسیونهای مختلف روی داده‌های آن استفاده می‌شوند. در حقیقت در زمان اتصال یک کنترل به یک شیئ DataSet، در پروسه Data-Binding آن، کنترل به شیئ DataView مربوط به آن DataSet متصل می‌شود که با خصوصیت DefaultViewManager شیئ DataSet مشخص می‌شود.

برای ساخت یک شی DataView از متد New استفاده می شود. در مثال زیر یک شی DataView می‌سازیم:


Dim myDataView As New DataView
myDataView.Table = myDataSet.myTable
myDataGrid.DataSource = myDataView
myDataGrid.DataBind()

در مثال بالا ابتدا یک شیئ DataView جدید به نام myDataView ایجاد شده است. سپس خصوصیت Table آن برابر با MyDataTable از myDataSet که در برنامه کابردی ما موجود است قرار داده می‌شود. شی DataView دارای خصوصیتهایی می‌باشد که در زیر به اختصار توضیح داده شده‌اند:

AllowDelete ،AllowEdit و AllowNew: با تنظیم این مقادیر Boolean می توان با دستکاری، اضافه و حذف مقادیر در DataView، مقادیر متناظر آنها را در شیئ DataTable مربوط تغییر داد.
Count: تعداد اشیاء RowView موجود در DataView جاری را بر می گرداند. (مشابه خصوصیت Count از شیئ DataTable)
Item: شیئ DataRowView که توسط اندیس به وسیله پارامتر به آن ارسال شده است را بر میگرداند.
RowFilter: عبارتی که برای فیلتر کردن سطرهای درون DataView استفاده می شود را مشخص می‌کند.
Sort: عبارتی که برای مرتب کردن سطرهای درون DataView به کار می رود را مشخص می‌کند.
Table: شیئ DataTable متناظر با DataView را مشخص می کند.


برای استفاده از خصوصیات RowFilter و Sort عبارتهایی هستند که مشابه عبارتهای محاسباتی برای متد Select از شی DataTable مورد استفاده قرار می‌گیرند. برای تنظیم مقادیر خصوصیت Sort که مربوط به روش مرتب سازی سطرهای DataRow است، لازم است مقادیر ستونهای مورد نظر جهت مرتب سازی را به ترتیب در داخل علامت '''' قرار دهیم. برای مثال برای مرتب سازی یک DataView به ترتیب بر حسب ستونهای Date و Author به روش زیر عمل می‌کنیم:


myDataView.Sort = ''Date, Author''

با قرار دادن عبارتهای ASC و DESC بعد از نام ستونها با یک فاصله می‌توان سطرها را به ترتیب صعودی یا نزولی مرتب کرد. (حالت پیش فرض صعودی ASC است)


myDataView.Sort = ''Date DESC, Author ASC''

برای تنظیم مقدار RowFilter می توان از عبارات DataColumn استفاده کرد. این عبارات شامل یک سری توابع، عملگرها، عبارات و نام ستونها می‌باشند که جهت انجام فیلتراسیون مورد استفاده قرار می گیرند. در این عبارتها می توان از تمام عملیات دستکاری روی رشته‌ها و متغیرهای رشته‌ای استفاده کرد. به علاوه برای استفاده از مقادیر تاریخ باید آنها را در بین علامات ## قرار داد. برای استفاده از یک ستون خاص در این عبارات تنها کافیست از نام آن ستون استفاده کنید. برای استفاده ز سطرهای فرزند از عبارت .Child قبل از آنها و برای استفاده از سطر مادر نیز از عبارت .Parent قبل از آنها استفاده کنید.

بعضی از توابع قابل استفاده در این عبارات عبارتند از: Sum ،Avg ،Min ،Max و Count. و هچنین بعضی از عملگرهای منطقی مورد استفاده عبارتند از: And Or Not < > <= >= <> In و Like. عملگر In مشخص می کند که آیا مقدار مورد نظر در محدوده تعیین شده قرار دارد یا نه؟ مقادیر مربوط به حدود باید توسط علامات '' از هم جدا شوند. برای مثال:


Command = ''Author In ('K', 'M', 'N')''

برخی عملگرهای محاسباتی مانند + – * / % نیز در عبارات DataColumn قابل استفاده هستند. تعدادی تابع نیز در این عبارات مورد استفاده قرار می گیرند که برخی از آنها عبارتند از: Convert ،Len و ISNull.

در پایان نیز سه متد مهم شیئ DataView را به اختصار مورد بررسی قرار می‌دهیم:
AddNew: اضافه کردن یک سطر جدید به DataView.
Delete: پاک کردن یک سطر از DataView.
Find: سطرهایی که شامل پارامتر ارسالی به این متد هستند را پیدا می کند.
نوشته شده توسط محمد در دوشنبه شانزدهم دی 1387 |
شـامل تعدادى از اشياء تعبيه شده در خود است كـه باعث افزايش قدرت اسكريپتها ميشود. در ASP 3.0 مجموعا دوازده شيئ وجود دارد که ما در اين درس مختصرا به معرفي هر يک از اين اشياء ميپردازيم. در درسهاي آتي اشيائي را که بيشتر کاربرد دارند مفصلا توضيح خواهيم داد. Application : اين شيئ كه يكى از اشياء پر كاربرد در ASP است، براى ذخيره كردن متغيرها و نيز دستيابى به متغيرها از هر صفحه ASP استفاده ميشود. براى تمام كاربران فقط يک شيئ Application در سرور ساخته ميشود. يک Application مجموع چند صفحه ASP است كه اين صفحات، باهم، براى رسيدن به اهداف مشخصى كار مى كنند. اين شيئ، يک شيئ عمومى است و اطـلاعاتى را كه مى خواهيد در چند صفحه از ASP بكار ببريد، يكجـا بايد در اين شيئ ذخيره كنيد. ( مانند بانكهاى اطلاعاتى ) Session : اين شيئ نيز يكى از اشياء پر كاربرد در ASP است. شيئ Session براى ذخيره كردن اطلاعات يا تغيير تنظيمات براى هر جلسه كاربرى استفاده ميشود. هر جلسه كاربرى عبارتست از مدت زمانى كه يک كـاربر از زمان ورود به يک صفحه تا زمانى كه آن صفحه را ترک ميكند صرف ميكند. متغيرهايى كه در اين شيئ ذخيره ميشوند، اطلاعاتى را درباره يک كاربر نگه مى دارند و از همه صفحات ASP در يک پروسه كارى قابل دسترس هستند. در هنگـام شروع يک جلسه كاربري، براى هر كاربر جديد، يک شيئ Session در سرور سـاخته ميشود و با پايان يافتن يک جلسه كاربري، آن شيئ نيز خراب ميگردد. Server : اين شيئ براى دسترسى به خاصيتها و متدهاى روى سرور، استفـاده ميشود. Response : از اين شيئ براى فرستادن خروجى از اطلاعـات ورودى كاربر، به مرورگر استفاده ميشود. متد Write اين شيء يكى از پركاربردترين متدهـا در ASP است و براى نوشتن اطلاعات روى مرورگر استفاده ميشود. Request : اين شيئ و شيئ Response معمولا باهم به كار برده ميشوند.وظيفه اين شيئ دريافت اطلاعات از كاربر است. Dictionary : اين شيئ نيز به نوعى براى ذخيره كردن اطلاعات بكار ميرود. شما ميتوانيد به وسيله اين شيئ يک كلمه كليدى را به هر تكه از اطلاعات بچسبانيد. اين شيئ هنگام بازيابى اطلاعات، اطلاعاتى را كه شما ذخيره كرديد را به صورت Dictionary با كلمات كليدى برمى گرداند. Drive : اين شيئ براى دستيابى به خاصيتهاى يک ديسک سخت روى شبكه استفاده ميشود. File : اين شيئ براى انجام عمليات بروي فايل، مـانند : Copy & Delete, Remove استفاده ميشود. File System Object : اين شيئ براى دسترسى به فايلهاى سيستم، روى سرور استفاده ميشود. اين شيئ ميتواند فايلها، مسير فايلها و شاخه ها را دستكـارى كند و اطلاعات سيستم را دريافت كند. Folder : اين شيئ براى دسترسى به خاصيتهاى يک شاخه استفاده ميشود. Text Stream : اين شيئ براى دسترسى به محتواى يک فايل استفاده ميشود. ASP Error : اين شيئ يكى از ابزار ASP 3.0 است و فقط در IIS 5.0 قابل استفاده است. اين شيئ براى نمايش دادن اطلاعات دقيق، از هر اشتباه كه در پروسه اجراى اسكريپتهاى ASP رخ ميدهد استفاده ميشود. اين اطلاعـات فقط به وسيله متد Server.getlasterror قابل دسترسى هستند. اين 12 شيئ، اشياء تعبيه شده در ASP هستند كه شما تا اينجا با كار و وظيفه هر يک به طور مختصر آشنا شديد.

نوشته شده توسط محمد در دوشنبه شانزدهم دی 1387 |
شاید شما تاکنون مقالات بسیاری در خصوص ارسال Email در ASP.NET دیده باشید. ضعف اغلب این مقالات در این است که تنها به ذکر ساده ترین نوع ارسال Email بسنده میکنند. در این مقاله شما روش ساختن یک خبرنامه HTML ساده را خواهید آموخت.

آیا تاکنون سعی کرده اید برای سایت خود خبرنامه ایجاد کنید؟ آیا تاکنون وسوسه شده اید که سیستمی طراحی کنید که در صورتی که بینندگان سایت شما نظرات خود را در سایت شما وارد کنند برای آنها یک Email تشکرآمیز ارسال کنید؟ آیا می دانید ساختن یک HTML Template زیبا برای خبرنامه شما و استفاده همیشگی از آن جهت ارسال خبرنامه در ASP.NET بسیار ساده صورت می گیرد؟ آیا تاکنون سیستم نظرخواهی سایت Weblog.iProDev.NET را امتحان کرده و Email تشکر آن را دریافت کرده اید؟

چنانچه سوالات بالا شما را به دانستن بیشتر ترغیب کرده است به شما تبریک می گویم! چرا که در ادامه این مقاله شما روش بسیار ساده ارسال Emailهای HTML زیبا را بدون اینکه نگران چگونگی کدنویسی HTML متغیر رشته ای Body در MailMessage باشید را فرا خواهید گرفت.

برای شروع بیایید به روش کار نظری بیاندازیم: خوب احتمالا شما با روش ساختن یک نمونه از آبجکت MailMessage که در ASP.NET برای ارسال Email استفاده می شود آشنایی دارید (اگر این چنین نیست در ادامه مقاله به طور اجمالی توضیحاتی ارائه شده است) تنها قسمتی که باید مورد توجه قرار دهید این است که چگونه می توانیم Body نامه خود را به فرمت HTML و بدون نیاز به اینکه تمامی تگها را پشت سر هم در یک رشته طولانی و سردرگم کننده تایپ کنیم، درآوریم. یک ایده جالب این است که ما Template نامه خود را با استفاده از ادیتورهای WYSIWYG مثل FrontPage یا Dreamweaver طراحی کنیم و سپس تمامی کدهای HTML آن را درون یک متغیر رشته ای Import کرده و از آن استفاده کنیم. این کار بسیار آسان است. اما می توان این نامه را برای هر کاربر کمی سفارشی (Customize) کرد! برای مثال شما می توانید در ابتدای نامه کاربر را با نام وی مورد خطاب قرار دهید. بهتر است از این پس توضیحات را همراه با کدنویسی دنبال کنیم. (کلیه کدهای Server Side به زبان VB.NET نوشته شده است) سه گام اساسی برای این کار وجود دارد:

1- ساختن Template مورد نظر شما جهت ارسال Email:
برای این کار کافی است که Template مورد نظر خود را به فرمت HTML طراحی کنید. این به خود شما بستگی دارد که کدهای HTML را به صورت دستی بنویسید و یا از ادیتورهای WYSIWYG مانند FrontPage یا Dreamweaver یا !GoLive استفاده کنید. تنها تفاوتی که در اینجا وجود دارد این است که شما بایستی قسمتهایی از متن نامه خود را که متغیر هستند (مانند نام گیرنده Email، آدرس پست الکترونیکی وی و ...) را به گونه ای از بقیه قسمتها متمایز کنید. برای مثال اگر شما می خواهید در ابتدای نامه، دریافت کننده نامه را با نام خود مورد خطاب قرار دهید عبارت را به صورت زیر وارد کنید: ''سلام ''#NAME# لطفا توجه کنید که هیچ محدودیتی در تکنیک به کار رفته وجود ندارد و قرار دادن کاراکترهای ## فقط جهت متمایز ساختن این قسمت از محتوای استاتیک صفحه است و شما می توانید به صور دیگر آن را مشخص کنید مثلا ?NAME? یا هر چیز مشابه دیگر. این قسمت بعدا با نام شخص مورد نظر ما جایگزین می شود. نکته قابل ذکر دیگر اینکه چنانچه قصد دارید نامه خود را فارسی ارسال کنید تگ زیر را فراموش نکنید:




2- خواندن فایل Template جهت قراردادن در Body نامه شما:
پس از اینکه Template را آماده نمودید بایستی این فایل را بخوانید، قسمتهای مورد نظر (متمایز شده با ##) را با عبارات مورد نظر خود (که می توانید از Database استخراج کنید) جایگزین کنید و این متن را به صورت یک متغیر رشته ای در Body نامه خود قرار دهید (گام 3). این کار به وسیله کد زیر صورت می پذیرد: (قبل از هر چیز شما بایستی Namespace مورد نیاز که در اینجا System.IO می باشد را Import کنید)


Imports System.IO

Dim reader As StreamReader
Dim strFileName As String = Server.MapPath(''templatel.htm'')
Dim strFileText

reader = File.OpenText(strFileName)

While reader.Peek <> -1
strFileText += reader.ReadLine()
End While

reader.Close()
strFileText = Replace(strFileText, ''#Username#'', Name.Text)
strFileText = Replace(strFileText, ''#MsgID#'', Request(''MsgID''))
strFileText = Replace(strFileText, ''#AuthorID#'', Request(''AuthorID''))

حال بیایید نگاهی به کد فوق بیاندازیم: در سطر اول شما یک شی از نوع StreamReader که جهت خواندن فایلهای متنی به کار می رود را می سازید و در سطر بعدی مسیر فیزیکی فایل Template خود را در متغیر رشته‌ای strFileName ذخیره می کنید.

نکته: در صورتیکه بخواهید در فایل کلاس خود از کد فوق استفاده کنید بایستی مسیر فیزیکی فایل را با استفاده از System.Web.HttpContext.Current.Server.MapPath(''template.htm'') به دست آورید. اما در Code Behind یک WebForm همان Server.MapPath() کافی است.

سپس در سطر بعدی ما با استفاده از متد OpenText فایل مورد نظر را باز کرده و متن آن را در Reader قرار می دهیم. حال در یک حلقه While...End While سطر به سطر فایل Template را (که در اینجا کدهای HTML ما هستند) می خوانیم و در متغیر strFileText ذخیره می کنیم. Reader.Peek <> -1 بررسی می کند که آیا به انتهای فایل رسیده ایم یا خیر. پس از اینکه کل فایل را خوانده و در متغیر ذخیره کردیم. شی reader را می بندیم.

در اینجا شما باید Template نامه خود را برای کاربر خاص Customize کنید. یعنی عبارات محصور شده با ## را با اطلاعات کاربر (که از بانک اطلاعاتی استخراج می شود و یا از یک Query String دریافت می شود) جایگزین کنید. در مثال بالا مقدار اول در Template با مقدار یک Textbox و دو مورد بعدی با Query String های انتهای یک URL جایگزین می شود.

حاصل کار یک متغیر رشته ای به نام strFileText است که حاوی کد HTML مورد نیاز شما برای ارسال یک HTML Email می باشد. که مثلا عبارت ابتدای آن به صورت زیر در آمده است: ''سلام مهدی''

3- استفاده از قالب Import شده فوق و ارسال Email:
حال به آسانی Email را ساخته و ارسال می کنیم. بدین ترتیب: (Imports System.Web.Mail را فراموش نکنید!)


'Creating and sending mail to user
Dim objMail As New MailMessage()
objMail.From = ''You@YourDomain.com''
objMail.To = Email.Text.Trim
objMail.Subject = ''YOUR SUBJECT GOES HERE...''
objMail.BodyFormat = MailFormat.Html
objMail.BodyEncoding = System.Text.Encoding.UTF8
objMail.Body = strFileText
SmtpMail.SmtpServer = ''smtp.YOURSERVER.com''
SmtpMail.Send(objMail)

این قسمت نیاز به توضیخ چندانی ندارد. جز اینکه objMail.To را بایستی به صورت داینامیک (از DB و ...) تغییر دهید (در اینجا مقدار از یک Textbox دریافت شده است)، SMTP Server خود را مشخص کنید و Email را ارسال کنید! به همین سادگی. بقیه موارد بسیار واضح هستند.

لطفا به این نکته توجه کنید که برخی SMTP Serverهایی که نیاز به Authentication دارند را نمی توان برای این منظور (ارسال Email به آدرس های خارج از SMTP Server فوق) مورد استفاده قرار داد. در این خصوص لطفا به Administrator سرور خود رجوع کنید.
نوشته شده توسط محمد در دوشنبه شانزدهم دی 1387 |
در این مقاله با سه روش QueryString، متغیرهای Session و متد Server.Transform برای انتقال مقادیر بین فرم‌های وب آشنا خواهید شد.
فرمهای وب ASP.NET، مدل برنامه‌نویسی رویدادگرای شگرفی را برای توسعه‌گران فراهم می‌کنند. این موضوع طراحی سرتاسر برنامه کاربردی شما را ساده می‌کند ولی مسائل و مشکلات خاص خود را نشان می‌دهد. برای مثال، در ASP کلاسیک شما به آسانی می‌توانید مقادیر را با استفاده از POST از یک صفحه ASP به صفحه‌ای دیگر ارسال نمایید. اما اگر می‌خواهید در مدل فرمهای وب (یا همان مدل برنامه‌نویسی ASP.NET) برنامه‌نویسی کنید، همان چیز در ASP.NET ممکن نمی‌باشد. اما راههایی برای غلبه بر این وضعیت وجود دارند که می‌توانند مورد استفاده قرار بگیرند. در این مقاله موضوعات زیر را مورد بررسی قرار خواهیم داد:


چگونگی ارسال مقادیر با استفاده از QueryString
چگونگی استفاده از متغیرهای Session برای ارسال مقادیر
چگونگی استفاده از متد Server.Transfer برای ارسال مقادیر

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


یک فرم وب با کنترل‌هایش را درست کنید.
یک کنترل دکمه‌ای Button یا LinkButton برای ارسال فرم به سرور بر روی فرم قرار دهید.
در رویداد کلیک دکمه یک متغیر از نوع String تعریف کنید که URL را برای فرم دیگر که مقادیر قرار است به آنجا ارسال شوند، نگه می‌دارد.
مقادیر کنترل‌ها را در قالب پارامترهای QueryString در متغیر از نوع String قرار دهید.
از متد Response.Redirect که از متغیر String تعریف شده استفاده می‌کند برای هدایت کاربر به صفحه دیگر استفاده نمایید.
قطعه کد زیر چگونگی انجام این مراحل را نشان می‌دهد:


private void Button1_Click(object sender, System.EventArgs e)
{
string url;
url=''anotherwebform.aspx?name='' +
TextBox1.Text + ''&email='' +
TextBox2.Text;
Response.Redirect(url);
}
فرم وب منبع


private void Page_Load(object sender, System.EventArgs e)
{
Label1.Text=Request.QueryString[''name''];
Label2.Text=Request.QueryString[''email''];
}
فرم وب مقصد


استفاده از متغیرهای Session
در این روش باید مقادیر کنترل‌ها را در متغیرهای Session ذخیره کنیم و در فرم وب دیگری به آنها دسترسی داشته باشیم. همانطور که می‌دانید ذخیره داده‌های زیاد در Session ممکن است اختلالاتی را در سرور بوجود آورد، بنابراین باید از این متد بدرستی استفاده شود. البته هر وقت که خواستید می‌توانید متغیرهای Session را از بین ببرید. مراحل اصلی برای استفاده از این متد به ترتیب زیر می‌باشد:


یک فرم وب با کنترل‌هایش را درست کنید.
یک کنترل دکمه‌ای Button یا LinkButton برای ارسال فرم به سرور بر روی فرم قرار دهید.
در رویداد کلیک دکمه، متغیرهای Session را تعریف کرده و مقادیر کنترل‌ها را در آنها قرار دهید.
کاربر را با استفاده از Server.Transfer به صفحه‌ای دیگر هدایت کنید.
در فرم وب دیگر متغیرهای Session را دریافت کرده و پس از دریافت اگر لازم باشد آنها را پاک کنید.
کد زیر این مراحل را در عمل نشان می‌دهد:


private void Button1_Click(object sender, System.EventArgs e)
{
// textbox1 and textbox2 are webform controls
Session[''name'']=TextBox1.Text;
Session[''email'']=TextBox2.Text;
Server.Transfer(''anotherwebform.aspx'');
}
فرم وب منبع


private void Page_Load(object sender, System.EventArgs e)
{
Label1.Text=Session[''name''].ToString();
Label2.Text=Session[''email''].ToString();
Session.Remove(''name'');
Session.Remove(''email'');
}
فرم وب مقصد


استفاده از Server.Transfer
این روش متدی پیچیده ولی روش ماهرانه‌ای برای ارسال مقادیر بین صفحات است. در اینجا مقادیری را که می‌خواهید در صفحات دیگر به آنها دسترسی داشته باشید به عنوان خصوصیات کلاس صفحه بیان می‌کنید. در کل این متد واضحتر و شیءگراتر از متدهای قبلی است. مراحل زیر را برای استفاده از این متد بترتیب دنبال کنید:


یک فرم وب با کنترل‌هایش را درست کنید.
رویدادهای خصوصیت Get که مقادیر کنترل‌ها را برخواهند گرداند را تعریف کنید.
یک کنترل دکمه‌ای Button یا LinkButton برای ارسال فرم به سرور بر روی فرم قرار دهید.
در رویداد کلیک دکمه متد Server.Transfer که اجرای برنامه را به فرم تعیین شده انتقال می‌دهد فراخوانی کنید.
در فرم دوم شما می‌توانید با استفاده از خصوصیت Context.Handler به یک نمونه از فرم اول دسترسی داشته باشید. سپس می‌توانید از خصوصیات Get که برای دسترسی به مقادیر کنترل‌ها ایجاد کرده‌ایم استفاده کنید.
کد زیر برای اجرای یک نمونه از مراحل بالا تدارک دیده شده است. خصوصیات زیر را به فرم وب اضافه کنید:


public string Name
{
get
{
return TextBox1.Text;
}
}

public string EMail
{
get
{
return TextBox2.Text;
}
}
فرم وب منبع

حال Server.Transfer را فراخوانی کنید.


private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer(''anotherwebform.aspx'');
}
فرم وب منبع


private void Page_Load
(object sender, System.EventArgs e)
{
//create instance of source web form
WebForm1 wf1;

//get reference to current handler instance
wf1=(WebForm1)Context.Handler;
Label1.Text=wf1.Name;
Label2.Text=wf1.EMail;
}
فرم وب مقصد
نوشته شده توسط محمد در دوشنبه شانزدهم دی 1387 |
با استفاده از فایل Web.Config در ASP.NET میتوانید مقادیر عمومی مانند رشته اتصال (ConnectionString) را بین تمام صفحات خود به اشتراک بگذارید.
بسیاری اوقات برنامه‌های کاربردی نیاز دارند که چیزهای خاصی مانند Connection String (رشته اتصال) یا پارامترهای عمومی برنامه، به طور خارجی برای برنامه ذخیره شوند. راه قدیمی برای این کار استفاده از فایلهای INI یا وارد کردن آنها در Registry بود. البته هر کدام از این روشها مشکلات خاص خود را دارند. ASP.NET راه مناسبی را برای انجام آن فراهم کرده است. شما می‌توانید این قبیل مقادیر را قسمت فایل Web.Config ذخیره کنید. کد زیر بیانگر این مطلب می‌باشد.

ذخیره کردن مقادیر در Web.Config
کد زیر را به فایل Web.Config خود اضافه کنید:




value=''Integrated Security=SSPI;
Initial Catalog=Northwind;
Data Source=MyServer\NetSDK'' />



فضانامهای مورد نیاز
فضانامهای زیر کلاسهای مورد نیاز برای این کار را فراهم می‌کنند:


System.Collections.Specialized
System.Configuration

کد VB.NET برای بازیابی مقادیر
کد زیر چگونگی بازیابی مقادیر را با استفاده از VB.NET نشان می‌دهد:


Dim myvar As String
Dim nv As NameValueCollection
nv = ConfigurationSettings.AppSettings()
myvar = nv(''connectionstring'')

البته شما می‌توانید این کار را با سرعت بیشتری انجام دهید:


Dim myvar As String
myvar=ConfigurationSettings.AppSettings(''connectionstring'')

کد #C برای بازیابی مقادیر
کد زیر چگونگی بازیابی مقادیر را با استفاده از #C نشان می‌دهد:


string myvar;
NameValueCollection nv;
nv=ConfigurationSettings.AppSettings;
myvar=nv[''connectionstring''];

البته شما می‌توانید این کار را با سرعت بیشتری انجام دهید:


string myvar;
myvar=ConfigurationSettings.AppSettings[''connectionstring''];
نوشته شده توسط محمد در دوشنبه شانزدهم دی 1387 |
اگر مایل هستید از پایه با ASP.NET آشنا شوید و به طور عملی ساخت یک برنامه وب را تجربه کنید، این خودآموز بهترین راهنمای شما است.
به عنوان یک برنامه نویس ویژوال بیسیک شما می توانید برنامه های تحت اینترنت نیز بنویسید. به طور معمول برنامه نویسان ویژوال بیسیک به سمت ASP که یک تکنولوژی از مایکروسافت است متمایل هستند. دلیل این امر هم شباهت میان VB و VBScript می باشد. بزرگترین ایرادی که ASP کلاسیک دارد نداشتن یک محیط ویژوال مانند فرم‌های معمولی بیسیک است. مایکروسافت با Visual InterDev سعی کرد این کمبود را جبران کند اما چندان موفق نبود. بالاخره در ویژوال بیسیک دات نت ترکیبی از InterDev و ویژوال بیسیک وجود دارد و امکانات فرم‌های ویژوال بیسیک را برای اینترنت نیز فراهم می کند.

Web Form ها یکی از اجزای تکنولوژی ASP.NET است که به برنامه نویس های اکثر زبان ها این امکان را می دهد که یک قالب ویژوال با HTML و یک محیط برنامه‌نویسی تحت سرور با کدهای پیشرفته داشته باشند.

Web From ها در عمل
بهترین راه برای فراگیری این تکنولوژی یک مثال عملی از آن است. پس از مثال معروف Hello World برای شروع استفاده می کنیم.

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


سیستم عامل شما باید حتما ً از نوع ان تی باشد، ویندوز 2000 (سرور یا Professional)، ویندوز اکس پی Professional و یا ان تی سرور 4.
باید NET Framework. بر روی سروری که می خواهید با آن کار انجام دهید یا برنامه شما بر روی آن اجرا خواهد شد نصب شده باشد. اگر ویژوال استودیو دات نت را نصب کرده اید مشکلی در این مرحله ندارید.
مایکروسافت توصیه کرده که سیستم فایل هارد دیسک سرور شما بهتر است NTFS باشد، هم به دلیل مسائل امنیتی و هم سرعت بیشتر.
Hello World
در فرم مخصوص ایجاد یک پروژه جدید ASP.NET Web Application را انتخاب کنید و نام آن را HelloWorld قرار دهید. دقت کنید که مکان ذخیره پروژه http://localhost باشد.

سپس بر روی کلید OK کلیک کنید تا یک Solution جدید ایجاد گردد. به طور قراردادی ویژوال استودیو یک Web Form با نام WebForm1.aspx ایجاد می کند. دقت کنید که پسوند فایل چه تغییری کرده است.

وقتی بر روی کلید OK کلیک می کنید چند عمل در پشت صحنه انجام می شود. به غیر از ایجاد کردن یک شاخه در دایرکتوری Visual Studio Projects، ویژوال استودیو یک Web Application نیز در سروری که انتخاب کرده اید ایجاد می کند. بر روی سرور، ویژوال استودیو دات نت:


یک دایرکتوری با نام پروژه در شاخه inetpub/wwwroot ایجاد می کند.
این دایرکتوری را به عنوان یک IIS Application معرفی کرده و اجازه اجرای Script را بر روی آن می دهد.
اگر FrontPage Server Extensions را نصب کرده باشید یک FrontPage Web ایجاد می کند تا با FrontPage هم بتوانید به آن دسترسی داشته باشید.
می توانید همانگونه که با فرم های معمولی ویژوال بیسیک کار می کردید از Web Formی که جلوی شما است استفاده کنید، یعنی به شما امکان استفاده از Toolbox و استفاده از کامپوننت های درون آن بر روی Web Form داده شده است. یک Label را از Toolbox برداشته و بر روی قسمت بالای فرم قرار دهید و خاصیت Text آن را به Hello World تغییر دهید.

برای این مثال تمام کاری که لازم بود انجام شود را انجام دادیم. حالا می توانیم برنامه را اجرا کنیم. قبل از اینکار از Toolbar و در قسمت Solution Configuration به جای Debug ،Release را انتخاب کنید. حالا بوسیله کلید F5 برنامه را اجرا کنید. اگر هیچ مشکلی در سیستم نباشد باید صفحه مرورگر باز شود و فایل WebForm1.aspx نمایش داده وبر روی آن Hello World نوشته شود.

بر روی صفحه مرورگر کلید سمت راست موس را بزنید و View Source را انتخاب کنید تا ببینید چه مطالبی در سورس این صفحه آمده است. همانطور که می بینید کدهایی به HTML است که بوسیله فایل aspx در زمان اجرا ایجاد شده است.

همانطور که می بینید یک HTML Form در این متن دیده می شود در حالی که ما چنین چیزی را اضافه نکرده بودیم، درباره این مساله در ادامه توضیح خواهم داد. Labelی که اضافه کرده بودیم در تگ Span قرار دارد. تگ Span مانند یک Container برای Label ما است و اطلاعات آن را در خود نگهداری می کند. به ویژوال استودیو دات نت باز می گردیم.

همانطور که دیدید Web Form ها خیلی شبیه فرم های معمولی ویندوز هستند. در Web From جدیدی که می سازیم این خاصیت را بیشتر امتحان می کنیم. در برنامه Hello World که ایجاد کردیم تنها یک Web Form داشتیم: WebForm1.aspx. یک Web Form دیگر می سازیم تا کارهای بیشتری با آن انجام دهیم.

منوی Project | Add Web Form را انتخاب کنید. در فرمی که باز می شود Web Form را انتخاب کنید و مطمئن شوید که نام آن WebForm2.aspx است. (قبل از این کار ویژوال استودیو را از حالت اجرای برنامه خارج کنید)

بر روی Open کلیک کنید تا WebForm2.aspx در Solution ایجاد شود. بر روی WebForm2.aspx در Solution Explorer دو بار کلیک کنید تا مطمئن باشید که فرمی که تازه ایجاد کرده اید فعال است. مانند مثال قبلی یک Label بر روی فرم قرار دهید، سپس یک Button در زیر آن قرار دهید و اندازه هر دو را یکسان کنید. بر روی Label کلیک کنید و از پنجره Properties خاصیت ID را انتخاب کنید و آن را به lblText تغییر دهید. سپس بر روی کلید کلیک کنید و ID آن را به btnSubmit تغییر دهید. بر روی کلید یک بار کلیک کنید، سپس کلید Enter را بزنید تا به قسمت نوشتن کد برای این کلید وارد شوید.

در ASP.NET هر کدام از کنترل ها، کدی در پشت صحنه برای خود دارند. همانطور که مشاهده می کنید یک روال با نام btnSubmit_Click وجود دارد که هنگامی که بر روی کلید کلیک می شود اجرا می شود. کدی که در این روال نوشته شده باشد در سرور اجرا می شود و نه در مرورگر کامپیوتر کاربر. کد زیر را در روال مورد بحث بنویسید:


lblText.Text = ''Hello World''

همانطور که مشاهده کردید IntelliSense وارد عمل شده و وقتی بعد از lblText، نقطه را تایپ کردید لیستی از خواص و متد های مربوط به Label را به شما نمایش داد. این خاصیت در InterDev هم وجود دارد ولی در ویژوال استودیو دات نت از امکانات بیشتر و لیست پرمحتواتری برخوردار است.

پنجره کد را ببندید و به قسمت طراحی Web Form بروید، خاصیت Text کلید را به Submit تغییر دهید. حالا برنامه را امتحان می کنیم. اگر سعی کنید تا برنامه را بوسیله کلید F5 اجرا کنید دوباره WebForm1.aspx نمایش داده خواهد شد، زیرا که این فرم، فرم ابتدایی در پروژه ما است. برای اینکه WebForm2.aspx به فرم ابتدایی تبدیل شود در پنجره Solution Explorer بر روی WebForm2.aspx کلید سمت راست موس را بزنید و سپس Set As Start Page را انتخاب کنید. حالا می توانید برنامه اجرا کنید.

Web Form جدید، WebForm2.aspx در مرورگر اینترنت نمایش داده می شود در حالی که بر روی آن یک Label و یک کلید وجود دارد. بر روی کلید کلیک کنید تا متنی که تایپ کرده بودید در Label نمایش داده شود. همانطور که می بینید برنامه مانند فرم های معمولی ویندوز اجرا می شود.
نوشته شده توسط محمد در دوشنبه شانزدهم دی 1387 |
چگونگی ارسال فایل به سرور از طریق ASP.NET.
در بسیاری از Web Applicationها نیاز به ایجاد امکان Upload فایل به سرور به صورت کنترل شده و بدون نیاز به برقراری دسترسی از طریق FTP و... می باشد. انجام این کار در ASP.NET بسیار ساده است. در این مقاله سعی شده است از دیدگاه کاربردی و نه آزمایشگاهی به این مطلب نگریسته شود. به طوری که کلیه مراحل جهت ذخیره فایل روی Remote Server می باشد و نه Localhost.

کدنویسی شامل دو قسمت می باشد:
کدهای مربوط به Presentation Layer و یا همان صفحات aspx. که مورد مشاهده کاربر قرار می گیرد.
کدهای مربوط به Business Login Layer که همان Code Behind و Handlerهای صفحه می باشند که در این مقاله به زبان VB.NET نوشته شده است.
برای این کار ابتدا بایستی یک وب فرم درون Application خود ایجاد کرده سپس در درون تگ
نوشته شده توسط محمد در دوشنبه شانزدهم دی 1387 |
در قسمت اول این مقاله به توضیح SQL Injection و نحوه مقابله با آن در ASP.NET و در پایگاه داده Access پرداخته می شود.
در این مقاله فرض شده است که خواننده با اصول اولیه زبان پرس و جوی ساخت یافته (Structured Query Language) یا همان SQL آشنا است. در ضمن کدهای موجود در این مقاله تماما به زبان VB.NET می باشند

یک حمله SQL Injection چیست؟
حتما در فیلمهای سینمایی دیده اید که بسیاری از تبهکاران قربانیان خود را با تزریق مواد سمی به جای دارو از میان بر می دارند. آیا در دنیای سایبر نیز چنین ایده هایی وجود دارد؟ در کمال تعجب باید بگویم که بله!! هکرها هم به نوعی از این شگرد استفاده می کنند. می گویید چگونه؟ با تزریق کردن دستورات SQL مورد علاقه خود به Application شما! اجازه دهید تا با یک مثال مطلب را روشن تر کنم:

سیستم Login:
صفحات Login معمولا دارای فیلدهایی هستند که دو مقدار ID و Password را از کاربر گرفته و سپس با استفاده از یک دستور SQL آن را پردازش می کنند. نمونه ساده ای از این دستور به صورت زیر است:


SELECT COUNT(UserID) FROM tblUsers WHERE UserID=''' & UserID.Text & ''' AND Pass=''' & Password.Text & '''''

در این مثال UserID و Password دو کنترل TextBox هستند که مقادیر آنها بایستی مورد پردازش قرار گیرد. حال فرض می کنیم کاربر مقادیر را به صورت mahdi و 123 وارد نماید، در این صورت جمله SQL به صورت زیر تولید می شود:


SELECT COUNT(UserID) FROM tblUsers WHERE UserID='mahdi' AND Pass='123'

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


' OR 1=1 –

در این صورت عبارت SQL زیر تولید خواهد شد:


SELECT COUNT(UserID) FROM tblUsers WHERE UserID='' OR 1=1 – AND PASS=''

احتمالا می دانید که کاراکتر - در SQL علامت توضیحات است و عبارت پس از آن دیگر پردازش نمی شود لذا هنگام پردازش دستور چون همواره 1=1 است و با توجه به OR به کار رفته، بدون توجه به خالی بودن مقدار مقابل UserID 1=1 کافی تلقی شده و کلیه رکوردهای بانک اطلاعاتی برگردانده می شود و Attacker اصطلاحا Authenticate می شود.

پیش از آنکه به ارائه راه حل این حفره امنیتی خودساخته بپردازیم این نکه شایان ذکر است که این حملات در پایگاه اطلاعاتی SQL Server بسیار پیچیده تر است که در قسمت دوم مقاله مورد بررسی قرار خواهد گرفت.

چاره کار!
ساختار شی گرای ASP.NET و امکانات این ساختار به برنامه نویسان امکان مانور بیشتری را داده است. حال ما کد کامل اصلاح شده را در زیر آورده و سپس توضیحات آن را ذکر می کنیم:


Dim strSQL As String = ''SELECT COUNT(UserID) FROM tblUsers WHERE
UserID=@UserID AND Password=@Password''
Dim cmndCheck As OleDbCommand = New OleDbCommand(strSQL, _Connection)

cmndCheck.Parameters.Add(''@UserID'', UserID.Text);
cmndCheck.Parameters.Add(''@Password'', Password.Text);
cmndCheck.Connection.Open()
Dim IsValid As Integer = cmndCheck.ExecuteScalar()

If IsValid > 0
'... Some Code here... User is authenticated
Else
'... Some Code here... User is not aututorized to view the page
End If

تغییر در همان خط اول یعنی دستور SQL مشخص است این بار به جای اینکه مقادیر دریافتی از فیلدها با Single Quote به خورد پردازشگر دستور داده شود مقادیر با پارامترهای تولید شده توسط آبجکت OleDbCommand جایگزین می شود و در آخر cmndCheck پردازش شده چنانچه مقدار تولید شده توسط ExecuteScalar بزرگتر از صفر باشد بدین معنی است که حداقل یک رکورد با شرایط مورد نظر ما پیدا شده است. (متغیر Connection_ که باید برابر ConnectionString شما قرار گیرد دانسته فرض شده است)

تقاوت اصلی این روش نسبت به روش ناامن قبلی این است که در اینجا مقادیر به صورت کاملا'' پارامتری شده پردازش می شوند نه به صورت قطعاتی از یک رشته حرفی که در واقع دام اصلی SQL Injection به شمار می آید. در واقع ما در اینجا از تکنیکهای رشته سازی با استفاده از & یا + اجتناب کرده ایم.

نکته مهم دیگری که باید حتما مورد توجه قرار دهید این است که یکی از راههایی که هکرها برای حمله به سایت شما استفاده می کنند خطاسازی صوری در زمان اجرای Application و مطالعه اطلاعات خطای دریافت شده است. برای جلوگیری از این اتفاق که می تواند ساختار بعضی از قسمتهای کد شما را برای حمله کنندگان آشکار کند حتما در Application خود از روال خطایابی Customize شده استفاده کنید. علاوه بر این می توانید در بسیاری از قسمتها به صورت موردی از Try...End Try استفاده کنید و برای اطلاع خودتان از خطای رخ داده e As OleDbException را به آدرس Email خود ارسال کنید که در این مورد در فرصتی دیگر صحبت خواهم کرد.

این مثال و راه حل یکی از ساده ترین انواع حملات Injection روی Web Applicationهاست و شما می توانید نمونه ها و مثالهای متعددی در این خصوص را در سایتهای www.sqlsecurity.com و www.nextgenss.com پیدا کنید که چنانچه گفته شد (و در قسمت دوم این مقاله بدان پرداخته خواهد شد) بیشتر مربوط به SQL Server است. روش کلی کار در SQL Server نیز کمابیش مشابه همین روش است با این تفاوت که در آنجا از Stored Procedure استفاده می شود. پس منتظر قسمت دوم این مقاله و تکنیکهای پیشرفته تر Hackerها در نفوذ به بانک اطلاعاتی SQL Server یک برنامه نویس ناشی و روش اجتناب از آن باشید ;-)

توضیح: برخی قسمتهای این مقاله از مقاله ''از بانک اطلاعاتی خود دفاع کنید'' نوشته Beth Breidenbach چاپ شده در شماره 9 (نوامبر/دسامبر 2002) مجله asp.netPRO اقتباس شده است.
نوشته شده توسط محمد در دوشنبه شانزدهم دی 1387 |
در اين مقاله با چگونگي تشخيص قابليت‌هاي مرورگر توسط ASP.NET آشنا خواهيد شد.
اگرچه در حال حاضر جنگ مرورگرها تقريبا تمام شده است اما اين موضوع دليلي بر شناخته نشدن قابليتهاي مرورگرها نيست. در اينجا توانايي ASP.NET در نشان دادن قابليتهاي مرورگرها بحث شده است. بعنوان نمونه، مثال ? نوع مرورگر را به ما نشان مي دهد.




You are using < % =Request.Browser.Type % >



براي نمونه اگر شما از IE 5 استفاده مي کنيد نتيجه خروجي چنين بايد باشد: You are using IE5
در مثال ? Request.Browser.Type يک رشته را که همان نام و نسخه مرورگر است را بر مي گرداند. اما اين موضوع چگونه صورت ميگيرد؟

شئ HTTPBrowserCapabilities
در حقيقت خاصيت Browser در شئ Request کلاسي از HTTPBrowserCapabilities است که در فضانام System.Web قراردارد. وقتي که اين کلاس روي يک صفحه ASP.NET نمونه سازي مي شود خواص صفحه سرويس گيرنده اي را نشان مي دهد که از آن براي اجرا شدن کد استفاده شده است. شئ Request در برگيرنده اين خاصيت مرورگر است که اين کلاس را ميتوان معادل کلاس MSWC.BrowserCapabilities در ASP کلاسيک در نظر گرفت. در ليست زير اکثر خاصيتهاي شي HTTPBrowserCapabilities تشريح شده است:

ActiveXControls:
نشان مي دهد که مرورگر اکتيويکس را ساپورت مي کند يا نه.

AOL:
چک مي کند که مرورگر از نوع AOL است يا نه.

Cookies:
نشان مي دهد که مرورگر کوکي ها را ساپورت مي کند يا نه. بايد توجه داشت که اين خاصيت وضعيت فعال بودن يا غير فعال بودن کوکي ها را نشان نمي دهد.

Crawler:
نشان ميدهد که مرورگر سرويس گيرنده از موتورهاي جستجو تاثير مي پذيرد يا نه.

Browser:
نوع مرورگر را نشان مي دهد.

Frames:
نشان مي دهد که مرورگر از قابليت Frame برخوردار است يا نه.

MajorVersion:
نسخه اصلي مرورگر را نشان مي دهد. بعنوان مثال در IE 5.1 عدد 5 نشانگر نسخه اصلي است.

MinorVersion:
نسخه جزيي (کوچکتر) مرورگر را نشان مي دهد. بعنوان مثال در IE 5.1 عدد 1 نشانگر نسخه جزيي است.

Type:
نوع و نسخه مرورگر را بصورت يک رشته بازميگرداند.

VBScript:
نشان مي دهد که مرورگر VBScript را ساپورت مي کند يا نه.

Version:
نسخه اصلي و جزيي مرورگر را بعنوان يک رشته برمي گرداند.

در زير نمونه کامل يک مثال آورده شده است:


< %@ page language=''VB'' % >
< %@ Import Namespace=''System.Web'' % >






< %
Dim browserObj As HTTPBrowserCapabilities
browserObj = Request.Browser
% >

Your browser supports ActiveX controls: < %=browserObj.ActiveXControls % >

Your browser type: < %=browserObj.Type % >

Your browser version: < %=browserObj.Version% >


... Add any other property that you would like to display.




نوشته شده توسط محمد در دوشنبه شانزدهم دی 1387 |