ورود

View Full Version : نمایش منو بر اساس نقش کاربر



aliblue
چهارشنبه 05 مهر 1391, 17:44 عصر
با سلام.من منو رو در MasterPage قرار دادم و توی رویداد لودش نقش کاربر رو میخونم و براساس اون منو رو نمایش میدم.3 نقش دارم و 3 منو.از کنترل menu خود asp.net استفاده کردم و می خوام مانند منوی همین سایت بعضی از گزینه هاش خودش لینک باشه و بعضی دیگه وقتی روش کلیک میکنم SubItem هاش زیر همون باز بشه.مثل همین سایت که وقتی مثلا روی فعالیت های اجتماعی کلیک میکنیم دو تا گزینه زیرش ایجاد میشه.
ولی مشکل من اینه که اولا با کلیک روی یک Item صفحه رفرش میشه تا SubItem هاش رو نمایش بده،دوما این که SubItem ها زیرش ظاهر نمیشن بلکه در کنار Item ظاهر میشن.
آیا با کنترل منو میشه همچین کاری کرد که مشکلات 1و2 رو نداشته باشه؟
اگه نه،پس با چه راهی میشه که بشه با کد نویسی و بر اساس نقش،محتویاتش رو عوض کرد؟
سرچ هم کردم به چیزی نرسیدم.
با تشکر.

Fartaj
چهارشنبه 05 مهر 1391, 18:14 عصر
سلام

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



protected void menu_MenuItemDataBound(object sender, MenuEventArgs e)
{
string text = e.Item.Text;
if (!HttpContext.Current.User.IsInRole("admin"))
{
if (text == "مدیریت")
e.Item.Parent.ChildItems.Remove(e.Item);
}

}


تو این کد گفتم اگر نقش کاربر مدیر بود گزینه مدیریت رو نمایش بده در غیر اینصورت حذفش کن

بقیه سوالتم حقیقتش متوجه نشدم می خوای چی کار کنی

aliblue
چهارشنبه 05 مهر 1391, 18:35 عصر
با تشکر از پاسختون.ولی نمایش منو بر اساس نقش رو بلدم.برای این کار توی رویداد لود صفحه نقش رو میخونم و بر اساس اون منو رو به فایل xml مربوطه بایند میکنم.
سوالم اینه که مثلا تو منو های همین سایت،اونایی که زیرمنو دارند،مثل اطلاعیه ها در بالا سمت چپ،یا ... وقتی روشون کلیک میکنیم زیرمنو ها زیرش نشون داده میشن.مشکل من اینه که وقتی میخوام یه همچین چیزی با کنترل منو درست کنم،با کلیک کردن،صفحه یک بار Refresh میشه تا زیرمنو ها رو نشون بده.من نمی خوام صفحه رفرش بشه.
در ضمن زیر منوهای من کنار آیتم اصلی نمایش داده میشن.چیکار کنم زیرش نمایش داده بشن؟

saeed_sho
چهارشنبه 05 مهر 1391, 18:57 عصر
دقیقا یادم نیست اما یه پراپرتی شبیه orientation داره که برای افقی باز شدن زیرمنو ها و یا عمودی باز شدن هست
در فایل xml که بهش بایند میکنی باید زیر منو رو در بین تگ آغاز و تگ پایان والد قرار بدی

aliblue
چهارشنبه 05 مهر 1391, 19:08 عصر
بابا اینا رو که من میدونم.افقی هم قرار دادم ولی زیر منو ها رو هم در همون ردیف والد نشون میده.من میخوام زیر منوهای هر والد زیرش نمایش داده بشه.

حالا من از خیر کنترل منو گذشتم.یه سوال دیگه دارم.فرض کنیم من این 3 تا منو رو با یه نرم افزار ساختم که متشکل از کدهای html,css هستند.حالا چطوری تو کدنویسی مشخص کنم که مثلا منو شماره 2 داخل

<asp:ContentPlaceHolder id="menu" runat="server">
</asp:ContentPlaceHolder>

نمایش داده بشه؟دقت کنید که دیگه از کنترل منو نمی خواهم استفاده کنم بلکه منو های Css مانند آنچه ضمیمه کردم:93300

aliblue
چهارشنبه 05 مهر 1391, 19:52 عصر
چطوری میشه کد های html رو داخل یک متغیر string ریخت؟مثلا کدهای زیر رو:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html dir="rtl">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

<!-- Start css3menu.com HEAD section -->
<link rel="stylesheet" href="menu1_files/css3menu1/style.css" type="text/css" /><style>._css3m{display:none}</style>
<!-- End css3menu.com HEAD section -->

</head>
<body style="background-color:#EBEBEB" >

<!-- Start css3menu.com BODY section -->
<ul id="css3menu1" class="topmenu">
<li class="topfirst"><a href="#" style="height:18px;line-height:18px;">Item 0</a></li>
<li class="topmenu"><a href="#" style="height:18px;line-height:18px;"><span>Item 1</span></a>
<ul>
<li><a href="#">Item 1 0</a></li>
<li><a href="#">Item 1 1</a></li>
<li><a href="#">Item 1 2</a></li>
</ul></li>
<li class="toplast"><a href="#" style="height:18px;line-height:18px;">Item 2</a></li>
</ul><p class="_css3m"><a href="http://css3menu.com/">CSS3 Image Button Css3Menu.com</a></p>
<!-- End css3menu.com BODY section -->

</body>
</html>


با توجه به این که داخل کدهاش علامت " زیاد به کار رفته و اگه بخوایم دستی درست کنیم سخت میشه.بخصوص این که اگه بخوایم کد جدیدی به جاش جایگزین کنیم دوباره باید از اول همون کارو بکنیم.
یه جا دیدم کدهای html رو اول داخل یک فایل ریخت بعد از فایل خوند و داخل متغیر ریخت ولی یادم نیست چطوری بود.اگه شما میدونید یا راه دیگه ای سراغ دارید ممنون میشم.

aliblue
چهارشنبه 05 مهر 1391, 21:47 عصر
اگه بخوام کد های HTML داخل یک تگ رو تغییر بدم با چه کدی باید این کار رو کنم؟یادمه یه چیزی شبیه innerHtml بود.هم برای کنترل های asp.net رو بگید هم برای تگ های معمولی با استفاده از id اون ها.

aliblue
چهارشنبه 05 مهر 1391, 21:56 عصر
فهمیدم.اول باید runat تگ مورد نظر رو server قرار بدم.بعد از طریق کد نویسی میتونم به شکل زیر مقدار دهی کنم:

templatemo_menu.InnerHtml = menu;