PDA

View Full Version : سوال: اضافه کردن یک UserControl به صفحه بصورت دینامیک



hamed2592
چهارشنبه 19 بهمن 1390, 03:18 صبح
با سلام

اگه بخوایم یه User Control به صفحه اضافه کنیم کافیه که مثلا یه Div توی صفحه ی مورد نظر معرفی کنیم مثلا :


<Div id="Div1" runat="server"></Div>بعد کافیه توی Page Load کد زیر رو وارد کنیم (VB):

Dim CtrlCmnt As Control = CType(Page.LoadControl("Khabarname.ascx"), Control)

Div1.Controls.Add(CtrlCmnt)

با این کد usercontrol خبرنامه ( مثلا ) به صفحه اضافه میشه .

خب آموزشمون تمام شد برای مبتدیان .


»»» حالا سوال من از اساتید محترم اینه که «««

اگه مثلا ما بخوایم که userControl رو جایگزین یک عبارت کنیم یا یه تگ باید چیکار کنیم ؟

مثلا به جای Div بالا که از نوع runat="server" است بخوایم جایگزیم عبارت {Khabarname} کنیم که Runat نباشه چیکار باید کرد .

( اینوطوری در نظر بگیرید که کاربر ما فقط قالب سایتش رو وارد میکنه و میخواد خبرنامه تو فلان قسمت سایتش نمایش داده بشه و ما باید UserControl رو جایگزین {khabarname} کنیم که یه کد HTML معمولیه )

mahmood_4246
جمعه 12 اسفند 1390, 14:13 عصر
از Panel استفاده کن .. یا میتونی از لیترال هم استفاده کنی

mehdi-ghafari
یک شنبه 14 اسفند 1390, 15:48 عصر
از Panel استفاده کن .. یا میتونی از لیترال هم استفاده کنی
دوست عزیز ایشون میگن کاربر فقط html وارد کنه . مثل سیستم های وبلاگ دهی
آقا حامد یه مبحث خوب تو سایت هست که در مورد این سیستم توضیح داده شده
فکر میکنم آقای رضیی (اگر فامیلیشونو درست نوشته باشم) تحقیق کرده بودن
از پروفایل ایشون قسمت تاپیکهای ایجاد شده اون رو پیدا کنید

hamed2592
سه شنبه 16 اسفند 1390, 04:49 صبح
تشکر از جوابتون ...

نگاه کردم مطالب ایشون رو اما چیزی که شما فرمودین رو پیدا نکردم . اگه امکانش هست لینک بدین ممنون میشم .

raziee
سه شنبه 16 اسفند 1390, 09:28 صبح
با سلام.
در حالت کلی همچین امکانی وجود نداره.
سیستم های که به کاربر اجازه میدند توسط یک سری کلمات کلیدی محل قرار گیری اجزاء سایت رو تغییر بدند ، یک سیستم Rendering برای خودشون طراحی میکنند.
این کار یکسری مشکلاتی رو داره.
شما میتونید Render شدن صفحه رو مدیریت کنید و بگید که به جای کلمه ی کلیدی x ، متن y رو جایگزین کن. (اما فقط متن) اگه بخواهید یک UserControl رو به جای کلمه کلیدی x قرار بدید ابتدا باید خود اون UserControl رو Render کنید و کد تولید شده (یک متن هست) رو جایگزین x کنید.
اگه اون UserControl که به صورت دستی Render و جایگزین شده صرفا برای نمایش باشه مشکلی نیست. اما اگه وظیفه ی Post کردن یکسری اطلاعات رو داشته باشه و در Code Behind اطلاعاتی رو پردازش بکنه به مشکل بر میخورید.
برای این کار راه های جایگزین دیگه رو باید پیاده کنید.
در سیستم های وطنی :لبخند: سیستم آریانیک رو میتونید مورد بررسی قرار بدید.
آریانیک توسط یکسری توکن محل قرار گیری اجزائ صفحه رو در اختیار کاربر میگذاره. سایت هایی که توسط این سیستم پیاده شدند رو بررسی کنید و ببینید که به چه صورت اطلاعات از صفحه به سرور Post میشند.

khz-web1
سه شنبه 16 اسفند 1390, 20:11 عصر
در سیستم های وطنی :لبخند: سیستم آریانیک رو میتونید مورد بررسی قرار بدید.
آریانیک توسط یکسری توکن محل قرار گیری اجزائ صفحه رو در اختیار کاربر میگذاره. سایت هایی که توسط این سیستم پیاده شدند رو بررسی کنید و ببینید که به چه صورت اطلاعات از صفحه به سرور Post میشند.

مقاله وجود داره این روشی که گفتید رو توضیح بده ؟

ramin149
سه شنبه 16 اسفند 1390, 23:18 عصر
http://barnamenevis.org/showthread.php?314285-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1-div-%D8%AF%D8%B1-code-behind

hamed2592
چهارشنبه 17 اسفند 1390, 00:40 صبح
(( سورس برنامه رو میتونین از پایین دانلود کنید ))

آحه من به این فکر میکردم که این سیستم های مدیریت محتوا چطور کار میکنن ؟؟؟

و تنها چیزی که به ذهنم رسید ساخت یه سایت به صورت usercontrol بود یعنی تمامی بخش ها باید usercontrol باشه !

به نتایجی هم رسیدم ... و اون ساخت صفحه بصورت دینامیک بود !

در واقع توی صفحه ی Default.aspx ، قالب سایت یا مثلا همون قالبی که کاربر گذاشته رو میخونیم و آنالیز میکنیم .

با تغییرات کوچیکی که خودتون توی پروژه میبینین یه صفحه به اسم page.aspx ساخته میشه .

نکته 1 : به جای Tag های مورد نظر Div یا Span هایی از نوع سرور سخته میشن .

مثلا به جای {khabarnameh} یه span تعریف میشه بصورت زیر :



<span id=""khabarname"" runat=""server""></span>
به وسیله ی کد زیر هم توی صفحه ی page.aspx چک میکنیم که اگه کد خبر نامه وجود داشته باشه ، یوزر کنترل رو جایگزینش کنه .



If str.ToLower.IndexOf("khabarname") <> "-1" Then

' جایگزین کردن یوزر کنترل خبرنامه به صفحه سایت

Dim CtrlCmnt As Control = CType(Page.LoadControl("Menus/Menu_Side/Khabarname.ascx"), Control)
khabarname.Controls.Add(CtrlCmnt)
End If


امیدوارم بدرتون خورده باشه .

یا علی

raziee
چهارشنبه 17 اسفند 1390, 09:27 صبح
مقاله وجود داره این روشی که گفتید رو توضیح بده ؟
خیر.
پورتال آریانیک (http://www.aryanic.com/products-highportal.html) رو میتونید خودتون بررسی کنید.
البته فقط برای بالا بردن اطلاعات خودتون اون رو بررسی کنیدو قصد شیطنت نداشته باشید.:چشمک:

khz-web1
جمعه 19 اسفند 1390, 18:29 عصر
دات نت نیوک هم به همین صورت عمل می کنه؟