تبلیغات
مقالات آموزشی برنامه نویسی و شبکه - مطالب آموزش ASP.NET

تفاوت بین سه صفت ID و UniqueID و ClientID در کنترل های وب (asp.net)

 

هنگام کار با کنترل های ASP.NET حتما متوجه شده اید که تمام کنترل ها دارای 3 صفت ID و UniqueID و ClientID می باشند که هر سه این صفت ها دارای مقداری منحصر به فرد می باشند.
شاید این سوال در ذهن شما پیش آمده باشد که کاربرد این سه صفت چیست؟

ID :

با صفت ID همگی آشنایی داریم. این صفت جهت مقداردهی و دسترسی به کنترل های وب، هنگام برنامه نویسی کارایی دارد. 

UniqueID :

برای توضیح عملکرد UniqueID از یک مثال استفاده می کنم. فرض کنید یک کنترل Repeater دارید که دارای ItemTemplate می باشد و در داخل این ItemTemplate  یک عدد TextBox دارید که تعداد محصول خریداری شده و یک کنترل Label دارید که نام محصول خریداری شده را نگهداری می کند.
اکنون فرض کنید یک مشتری 5 نوع محصول مختلف خریداری نموده است. یعنی ItemTemplate  ما 5 مرتبه تکرار شده است و ما 5 عدد TextBox و 5 عدد Label داریم که تعداد محصول های خریداری شده و نام هریک را نگهداری می کنند. مشکل اینجا به وجود می آید که  این TextBox ها داخل Repeater به وجود آمده اند، پس ما به هر کدام از اینها یک ID منحصر به فرد نداده ایم و دارای نام های یکسانی می شوند پس چگونه باید به محتوای یک TextBox خاص دسترسی پیدا کنیم؟!
این مشکل توسط ,UniqueID حل می شود. این صفت به طور اتوماتیک تولید شده و باعث تمایز این TextBox ها از یکدیگر می شود. پس یکی از کاربردهای این صفت در کنترل هایی مانند Repeater و GridView و Wizard و غیره که داده های سلسله مراتبی (hierarchy) تولید می کنند، می باشد.
مقدار صفت UniqueID به طور مثال می تواند به صورت "CreateUserWizard1$CreateUserStepContainer$Email" باشد.
همانطور که می بینید مقدار معمولا طولانی می باشد که تشکیل شده است از نام کنترل های والد (Parent) آن، که با علامت $ از هم مجزا شده اند.
با این وجود یک مشکل دیگر وجود دارد و آن این است که علامت $ در HTML از لحاظ فنی یک کاراکتر غیر معتبر می باشد. و ما اگر بخواهیم از این صفت در سمت مشتری (Client) استفاده نماییم (معمولا درجاوااسکریپت و آژاکس) ، دچار مشکل می شویم.

ClientID :

صفت ClientID این مشکل را حل می نماید. این صفت، کاراکتر $ در صفت UniqueID را با علامت "_" که یک کاراکتر معتبر می باشد، جایگزین می نماید. یعنی مقدار ClientID شبیه این می باشد "CreateUserWizard1_CreateUserStepContainer_Email".
پس این مشکل نیز رفع شد و ما می توانیم با استفاده از جاوا اسکریپت به راحتی به مقدار هر کنترلی دسترسی داشته باشیم.



تفاوت بین سه صفت ID و UniqueID و ClientID در کنترل های وب (asp.net) - netnic.ir
تجربه مهم :

بنده وقتی به این موضوع پی بردم که توی یک پروژه می خواستم 5 تا کنترل FileUpload قرار بدم که کاربر بتونه 5 تا 5 تا تصاویرشو آپلود کنه.

خوب اینکه بیام و 5 تا if  بذارم که اگر فلان کنترل fileUpload.hasfile بود یه کاری رو انجام بده ، خوب کار قشنگی نبود

من هم که یه عقثده ای دارم که از کد نویسی های تکراری متنفرم

اول اومدم یه تابع نوشتم که ورودی از نوع کلاس FileUpload می گرفت ولی دیدم که کار نمی کنه و موقع ذخیره کردن فایل مشکل داره و کنترل رو پیدا نمی کنه (البته من یه سری کد خاص نوشته بودم که ممکنه به خاطر اونا این مشکل ایجاد شده باشه)

در هر حال بهترین راه حلی که پیدا کردم این بود که بیام و آی دی کنترل ها رو به تابع پاس بدم و درون تابع با متد FindControl به کنترل دست پیداکنم و ...

ولی بازم تابع کار نمی کرد ، تا اینکه متوجه شدم ک همن دارم از مسترپیج استفاده می کنم و وقتی از مستر پیج استفاده کنید ، آی دی کنترل هاتون در موقع رندر شدن صفحه تغییر می کنه (UniqueID) بنابراین صفحه رو لود کردم و بعد کد html ایجاد شده رو View Source که گرفتم ، دیدم که بله ، آی دی کنترل هام تغییر کرده و جالب اینه که آی دی اصلی کنترل درون خصوصیت name قرار می گیره !

یعنی در کد html آی دی ای که شما بتونین تو کد نویسی به کنترل دست پیدا کنین ، درون خاصیت name قرار می گیره

یا حق

نوشته شده در تاریخ چهارشنبه 8 آذر 1391    | توسط: ح.م    | طبقه بندی: آموزش ASP.NET،     | نظرات()


امکانات جدید در asp.net 4 و ویژوال استودیو 2010 - بخش اول

با سلام

مطلب بسیار مفیدی در سایت دوست عزیزم ، آقای دلشاد به چشمم خورد که به نقل از سایتشون (how2learnasp.net) اینجا قرار میدم.

جالب اینجاست که ایشون این مطالب رو در سال 1388 بیان کرده اند و بنده تا همین دیروز از برخی از این امکانات جدید بی خبر بودم !

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

امکانات جدید در asp.net 4 و ویژوال استودیو 2010 - netnic.ir

امکانات جدید در Asp.NET 4

 در این مقاله فقط به برخی از برجسته ترین امکانات جدید Dotnet FrameWork 4 اشاره خواهم کرد ، برای اطلاعات بیشتر به منابع معرفی شده مراجعه نمایید :

 

  • افزایش سرعت محیط Visual Studio.NET :

در ورژن جدید سرعت کار با محیط به صورت چشمگیری افزایش یافته ، سرعت باز شدن پروژه ، سوئیچ کردن بین Source و Design ، باز شدن پنجره Add Refrence و... افزایش یافته است .

 

  • بهبود Intellisence در #C :

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

همچنین برای دستیابی به یک آیتم میتوانید از تایپ خلاصه آن استفاده کنید ،فرض کنید تایپ کردید Button1 و یک نقطه قرار دادید و Intellisence باز شده است ، مثلا برای دستیابی به خاصیت ValidationGroup کافیست تایپ نمایید vg .

 

  •  بهبود برخی از کنترل ها :
    • کنترل ListView : همانطور که میدانید در نسخه قبل (ورژن 3.5) در هنگام استفاده از Listview باید یک LayoutTemplate تعریف می کردید که کمی دردسر داشت ، خوشبختانه در این ورژن نیازی به تعریف LayoutTemplate نیست
    • کنترل Menu : این کنترل یکی مشکل ساز ترین کنترل های ASP.NET بود ، هم برای مایکروسافت هم برای توسعه گران ، این کنترل با ایجاد تگ های مزاحم tr و td و... باعث افزایش بی رویه حجم صفحه می شد ، البته مایکروسافت راه حل هایی مانند Css Fiendly برای آن ارائه کرد که استفاده از آن هم داستان داشت . خوشبختانه در این نسخه این کنترل تگ های ui و li تولید کرده و در استفاده از Css بسیار بهینه شده است.
    • کنترل CheckBoxList و RadioButtonList : همانطور که میدانید این دو کنترل خاصیتی به نام RepeatLayout داشتند که دو مقدار Flow و Table را اتخاذ می کرد ، در نسخه جدید دو مقدار UnorderedList و OrderedList اضافه شده که باعث می شود برای نمایش  به ترتیب از تگ های ol و li و همچنین ul و li استفاده شود .

 

  • پنجره ها :

در نسخه 2010 ویژوال استودیو شما قادر هستید پنجره ها را درگ کرده و از کل نرم افزار خارج کنید ، همچنین میتوانید توسط خاصیت جدید Multi - Monitor پنجره ها را در مانیتور های مختلف مشاهده کنید

 امکانات جدید در asp.net 4

  • بهبود نحوه ایجاد ClientID ها در فرم های وب :

همانطور که میدانید در Asp.NET هنگامی که یک کنترل سمت سرور در صفحه قرار می دهید اگر این کنترل در یک Container واقع باشد ID این کنترل پس از Generate شدن صفحه به HTML تغییر خواهد کرد ، مثلا اگر شما یک MasterPage داشته باشید و در صفحه ای که از آن ارث گرفته شده یک باتن با آیدی Button1 قرار دهید پس از تبدیل به HTML  آیدی این کنترل تغییر خواهد کرد :

قبل از تبدیل :

بعد از تبدیل :

همانطور که ملاحظه می فرمایید id این کنترل تغییر کرده است ، که البته این امر برای جلوگیری از تولید ID های تکراریست ولی در برخی موارد برای ما در استفاده از Javascript و css مشکل ساز می شود .

در نسخه جدید برای رفع این مشکل برای تمامی کنترل های سمت سرور میتوان خاصیت ClientMode را ست کرد ، این خاصیت مقادیری زیر را اتخاذ می کند :

  1. AutoID : با انتخاب این  آیتم نحوه ایجاد آیدی دقیقا مانند نسخه های قبل خواهد بود ، یعنی آیدی ها به صورت خودکار تغییر خواهند کرد (ctl00_MainContent_Button1)
  2. Predictable : با انتخاب این گزینه به صورت خودکار آیدی کنترل های مادر در کنار آیدی کنترل جدید قرار می گیرد (MainContent_Button1)
  3. Static : بدون توجه به تکراری بودن آیدی ، دقیقا آیدی مورد نظر شما تخصیص داده می شود (Button1)
  4. Inherits : از تنظیمات مادر ارث بری می کند ، مثلا شما میتوانید خاصیت ClientMode را در تگ Page در وب کانفیگ یا Code-Page صفحه تنظیم نمایید .

این خاصیت در کنترل های داده ای نیز تغییراتی اعمال کرده است ، فرض کنید از یک Gridview استفاده کردیم ، علاوه براینکه میتوان خاصیت ClientIDMode را برای تمامی کنترل های سمت سرور داخل GridView تنظیم کرد میتوان به کمک خاصیت ClientIDRowSuffix مقدار فیلد مورد نظر را به انتهای آیدی کنترل ها اضافه نمود ، این امر در مورد تگ های Runat=server نیز صدق می کند :

پس از تبدیل :

همانطور که ملاحظه می کنید مقدار فیلد ID در بانک اطلاعاتی در هر سطر منتاظر به انتهاب id تگ ها اضافه شده است .


نوشته شده در تاریخ سه شنبه 7 آذر 1391    | توسط: ح.م    | طبقه بندی: آموزش ASP.NET،     | نظرات()


آموزش دستور region در asp.net و سی شارپ (#c)

با سلام

برای این ساعت از سایت نت نیک (آموزش) می خوام دستور region که یکی از دستورات بسیار کاربردی در سی شارپ هست رو آموزش بدم.
آموزش دستور region در asp.net و سی شارپ (#c) - netnic.ir

گاهی اوقات در برنامه نویسی ، آنقدر حجم کدها زیاد میشه که تحلیل و عیب یابی کدها عملا ناممکن میشه.
در این مواقع اگر بتونیم کدهامون رو قسمت قسمت کنیم و برای هر قسمت یک نام بذاریم ، خیلی بهتر و سریع تر می تونیم قسمت ها رو یکی یکی تحلیل و عیب یابی کنیم
بعنوان مثال من خودم چند روز پیش درون رویداد کلیک یک عدد کنترل Button حدود 70 خط کد نوشتم (دقیقا خط ها رو نشمردم ولی تو همین حدود بود) ، موقع اجرا کد ، کد اجرا نشد و ارور داد ، به قول خودم ، "یا خدا" کی می خواد این همه کد رو بشینه تحلیل کنه !؟
اینقدر if  و else  توی هم توی هم زده بودم که خودمم گیج شده بودم که کدوم else واسه کدوم if است !

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

دستور region هم همین کار رو در سی شارپ انجام میده ،
یعنی بوسیله اون می تونین یک بخش از کد هاتون رو بصورت باکس در بیارید و اگر دوست داشتید به این باکس یه اسم هم بدید و بعد روی علامت - که در کنار دستور region ایجاد میشه ، کلیک کنین و کل باکس رو ببندین.

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

دستور region یکی از دستوراتی است که در موقع اجرای دستورات مثل یک کامنت می مونه و هیچ تاثیری نداره ، (کامپابل نمیشه) ؛ تنها فایده اش اینه که توی کد نویسی های طولانی به کمک برنامه نویس میاد و خیلی تو کد نویسی می تونه به برنامه نوبس کمک کنه.

نمی دونم تونستم منظور رو برسونم یا نه ؛ میگن هیچی تو برنامه نویسی مثل دیدن کد نمونه نمیشه

در ادامه مطلب ، چند تا تصویر از نحوه استفاده این دستور قرار دادم که با دیدن تصاویر کاملا اهمیت و کارایی دستور region  رو درک خواهید کرد.

نوشته شده در تاریخ دوشنبه 6 آذر 1391    | توسط: ح.م    | طبقه بندی: آموزش ASP.NET، آموزش سی شارپ،     | نظرات()


ضرورت لایه بندی در پروژه های asp.net

سلام
اگر امکان دارد درباره کلاس ها و لایه بندی با مثالی توضیح دهید تا این موضوع که برای خیلی ها مثل من مبهم است روشن شود.
چون بدون ساخت کلاس از پروژه خروجی های مورد نظر را می گیرم،آیا برای انجام پروژه ها لایه بندی ضروری است یا اینکه زمانبر است و توصیه نمی شود؟

پاسخ :
سلام
پروژه های asp.net (چه تحت ویندوز و چه تحت وب) رو به دو صورت میشه زد : بدون لایه بندی و با لایه بندی

لایه در asp.net یعنی چه ؟ (مفهوم لایه در asp.net)

لغت لایه در اصل یه اصطلاحه ، در اصل در لایه بندی ، پروژه شما به چند کلاس تبدیل میشه که هر کلاس وظیفه خاصی داره.

مثلا :

یک کلاس که اطلاعات ارتباط با دیتابیس توش ذخیره میشه  >>  لایه Data Access Layer

یک کلاس که حاوی کل موجودیت های پروژه است  >>  لایه Business Layer
یک کلاس Base که تمامی توابع مشترک موجودیت هایمان توی اون قرار میگیره (تابع های Save,Delete,FromId و ....)
>>  لایه Business Layer

خود صفحات و کد نویسی های (Code Behind صفحات)  >> لایه Presentation


پروژه که کاملا ایجاد شد ، کلاس های Data Access Layer  و Business Layer رو بصورت فایل DLL  (کتابخونه) در میاریم که بدین صورت دیگر کسی به سورس کدهای داخل کلاسهامون دسترسی نخواهد داشت و کلاس ها و کدهامون کاملا باکس میشه.

نکته : بعضیا پروسیجر ها رو هم یه لایه در نظر می گیرن ، پس اگر عبارت 3 لایه یا 4 لایه یا 5 لایه رو شنیدین ، اصلا نترسین ، در اصل همینیه که من در بالا گفتم + ابنکه یه سری چیزای الکی رو هم برای خودشون لایه در نظر گرفته اند که کلاس بذارن و بگن پروژه رو مثلا 5 لایه نوشتن !  (یه جورایی بازار گرمی کردنه)

لایه بندی در asp.net - netnic.ir
مزایای لایه بندی در asp.net :

  • نظم بسیار خوبی پیدا می کنن
  • کد نویسی با این روش بسیار راحت تر میشه
  • سرعت کارکرد پروژه فوق العاده بالا میره
  • امنیت پروژه فوق العاده بالا میره  >> کد ها و اطلاعات دیتابیس کاملا باکس میشه و حتی اگر هکر به فایل های شما دسترسی پیدا کنه ، نمی تونه اطلاعات حساسی مثل یوزر و پسورد دیتابیس رو بدست بیاره . دقت کنین که برخی از برنامه نویسان فکر می کنن که اگر کانکشن استرینگ رو توی وب کانفیک بذارن دیگه عالیه و امنیت خداست و ... ، در صورتی که دسترسی به این فایل زیاد هم سخت نیست (بنده خودم مدرک CEH دارم ، پس این مورد رو از روی تجربه میگم)
  • کپی رایت کاملا رعایت میشه >> کسی به غیر از طراح سایت نمی تونه پروژه رو تغییر و یا گسترش بده (چون همه کد های اصلی باکس شدن و دسترسی به کد ها غیر ممکنه)
  • ایجاد تغییر در پروژه و یا گسترش پروژه بسیار راحت تر میشه (فقط کافیه که تغییر رو در لایه مورد نظر اعمال کنین و نیاز به تغییر کد همه لایه ها نیست)

و خلاصه پروژه ای که قراره روی هاست بره ، مسلما نمیشه با گرید ویو و SqlDataSource  و کانکشن استرینگی که توی وب کانفیگه زده بشه !

من خودم هم پروژه دانشجویی انجام میدم ، هم پروژه واقعی

یک پروژه دانشجویی یه سایت معمولی رو تو 5 روز میزنم ، ولی همون پروژه رو وقتی بخوام واقعی بزنم (بره روی هاست) ، ممکنه 20 روز روش کار کنم ...

در روش لایه بندی حجم کدی که میزنین بیشتر میشه ، (پروسیجر نویسی - زدن لایه ها و ...) ولی در عوض مزایای بالا رو هم داره.

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

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

چون مثلا شما 1000 تا رکورد دارین ، در روش گرید ویویی ؛ کل 1000 تا رکورد باید لود بشه توی صفحه و بعد گرید ویو بیاد اونا رو صفحه بندی کنه و دوباره وقتی کاربر روی یکی از صفحات کلیک می کنه ، دوباره همه 1000 تا رکورد از دیتابیس واکشی و توی صفحه لود میشه و گرید ویو مثلا میاد 10 رکورد مورد نظر (اون صفحه) رو نمایش میده !

خوی مسلما این کار روی یک پروژه واقعی هیچ وقت انجام شدنی نیست ، و اصلا عقلانی هم نیست ، چون بازدید سایت که به 10 نفر برسه ، سرور SQL کلا تعطیل میشه ... !

در کد نویسی اصولی ،برنامه نویس میاد و فقط رکوردهای لازم رو از دیتابیس می خونه ، مثلا اگر کاربر میره توی صفحه 3 و قراره توی هر صفحه 10 تا رکورد نمیاش داده بشه ، باید فقط و فقط 10 رکورد سوم از دیتابیس خوانده و توی صفحه لود بشه ....

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

امیدوارم که تونسته باشم کامل راهنماییتون کنم ،

برای یاد گرفتن مباحث لایه بندی و کلاس نویس می تونین کتاب 70536 مایکروسافت رو بخونین
برای یاد گیری مباحث مربوط به پرویسجر نویسی ، TSQL و ... می تونین کتاب 70433 مایکروسافت رو بخونین

(هر دو این کتابها رو سایتم برای دانلود وجود دارن ، کافیه از بخش جستجوی بالای سایت عبارت های 70433 یا 70536 رو سرچ کنین)

  یاحق

نوشته شده در تاریخ سه شنبه 30 آبان 1391    | توسط: ح.م    | طبقه بندی: آموزش ASP.NET، جواب سوالات شما،     | نظرات()


آموزش ساخت سیستم آزمون آنلاین بوسیله کنترل wizard در asp.net

سلام

برای این ساعت از سایت نت نیک می خوام ساخت سیستم آزمون آنلاین بوسیله کنترل wizard در asp.net رو آموزش بدم.

دانلود فیلم آموزش پکت تریسر - netnic.ir

یک کد خیلی خوب پیدا کردم که اینجا قرار میدم :


این کد یک Sample عالی است که ازش می تونید :


  • یاد بگیرین چطوری بصورت داینامیک تو صفحه کنترل Add کنین
  • یاد بگیرین چطوری برای کنترل هاتون بصورت داینامیک Event هندل کنین (event بسازید)
  • طریقه کار با کنترل ویزارد و ساخت داینامیک این کنترل رو یاد بگیرید و ....


نوشته شده در تاریخ دوشنبه 29 آبان 1391    | توسط: ح.م    | طبقه بندی: آموزش ASP.NET، پروژه ها و ساخته های خودم،     | نظرات()


آموزش تغییر اندازه (سایز) تصاویر در asp.net

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

امروز می خوام طریقه تغییر اندازه (سایز) تصاویر در asp.net بدون افت کیفیت تصاویر رو آموزش بدم.

در اغلب سایت ها به دلیل کمبود فضا و همینطور بالا بردن سرعت لود صفحات ، بهتره که ما یک سری تصاویر رو بصورت کوچک (tumbnail) نمایش بدین و از قرار دادن تصاویر بزرگ خودداری کنیم.

خوب مسلما در این مواقع لازمه که از هر مطلب 2 تا عکس داشته باشیم ، یکی در اندازه کوچک (بند انگشتی یا tumbnail) و دیگری در اندازه ای بزرگرتر (سایزی که قراره در صفحه ای که کاربر باید شرح کامل یک مطلب رو بخونه باید نمایش داده بشه)

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

خوب مسلما اینکه مدیر سایت بیاد و خودش هر تصویر رو تو چند سایز تهیه کنه و بروی سایت آپلود کنه که یه کار خنده داره و نشون میده که برنامه نویس و طراح سایتش از این برنامه نویسایی بوده که 300 تومن می گیرن ، 4 روزه سایت تحویلت میدن .... !!!

کار درست اینه که مدیر سایت در کنترل پنلش یک عکس برای هر خبر یا مطلب انتخاب کنه (FileUpload)  و بعد شما با کد نویسی بیاین عکس رو در چند سایز مختلفی که نباز هست ، تغییر اندازه بدین ( Resize کنین) و بر روی سرور ذخیره کنین.

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

حتما می پرسین چطوری میشه در asp.net تصاویر رو تغییر اندازه داد و بعد روی سرور ذخیره کرد ؟

در ادامه مطلب نحوه تغییر اندازه تصاویر رو بهتون آموزش میدم.

نوشته شده در تاریخ دوشنبه 29 آبان 1391    | توسط: ح.م    | طبقه بندی: آموزش ASP.NET،     | نظرات()


ContentPlaceHolder در مسترپیج چیست و چه کاربردی دارد؟

سلام
ContentPlaceHolder در مسترپیج چیست و چه کاربردی دارد؟
صفحه ای دارم که از مسترپیج به ارث برده است،error:
The page has one or more<asp:Content> controls that do not correspond with<asp:ContentPlaceHolder > controls in the Master Page.
ممنون میشوم پاسخ دهید.


پاسخ شما :
سلام
- در مستر پیج درون بخش هایی از صفحه که قراره توسط صفحات فرزند تغییر داده بشه ، باید کنترل ContentPlaceHolder قرار بدین.
بعد از ایجاد کمشتر پیج ، حین ایجاد صفحات ، تیک user master رو میزنین و مستر پیج مورد نظر رو انتخاب میکنین.
در این صوردت بعد از ایجاد صفحه جدید ، به ازای هر کنترل ContentPlaceHolder ای که توی مسترپیج قرار داره ، یک کنترل Content درون صفحه خواهید داشت.
وقتی که دیزاین صفحه رو هم ببینین ، متوجه میشین که کل صفحه قفله و فقط جاهایی که در مستر پیج کنترل ContentPlaceHolder گذاشتین ، قابل دسترسی و تغییر است.
حتی یک کنترل Content با آی دی Head هم خواهید داشت که کدهایی که قراره داخل تگ head قرار بگیره (مثل کد های استایل و اسکریپت و ...) رو می تونین توی این کنترل بنویسین.
در زمان اجرای صفحه ، کد های صفحه و مسترپیج با هم ادغام میشن و نتیجه به مرورگر کاربر ارسال میشه.
- طبق متن ارور ، مشکل شما اینه که توی مستر پیج مثلا 2 تا ContentPlaceHolder دارین ولی توی صفحتون بیش از 2 تا Content دارین
ساده ترین راه حل : اول صفحه مستر پیج رو بسازین (قرار دادن ContentPlaceHolder در بخش های متغیر صفحه فراموش نشه) ، سپس صفحات رو از اول ایجاد و طبق مراحلی که گفتم صفحاتتون رو ایجاد کنین.
موفق باشید
NetNic.ir

نوشته شده در تاریخ پنجشنبه 25 آبان 1391    | توسط: ح.م    | طبقه بندی: آموزش ASP.NET، جواب سوالات شما،     | نظرات()


مطلب رمز دار : پروژه آموزشی ASP.Net آپلود سنتر عکس {مختص اعضای ویژه و مشتریان محترم}

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

نوشته شده در تاریخ سه شنبه 9 آبان 1391    | توسط: ح.م    |    | نظرات()