как включить и отключить кнопку в зависимости от роли пользователя?

У меня есть роль под названием «член» и еще один «администратор» на веб-сайте Asp.Net.

Я делал это раньше, эта кнопка должна быть видна или нет, и мне это удалось, но я не могу получить правильный код (aspx.cs), чтобы отключить кнопку, чтобы она могла быть видна, но совсем недоступна .

<asp:Button ID="Button4" runat="server" PostBackUrl="~/report.aspx" 
   Text="print in report format" Width="173px" 
   Enabled='<%# HttpContext.Current.User.IsInRole("Admin") %>' /> 

я хочу, чтобы каждый раз, когда участник входит в систему, кнопка «отчет» была отключена для него.


person iti    schedule 13.05.2011    source источник
comment
почему я не могу ответить на этот вопрос, проблема во мне или в вопросе :/   -  person Synxmax    schedule 13.05.2011


Ответы (6)


Вы должны установить значение свойства Button.Enabled в соответствии с возвращаемым значением функции HttpContext.Current.User.IsInRole("admin").

Либо в html:

<Button ... Enabled='<%# HttpContext.Current.User.IsInRole("Admin") %>' ... >

Или в коде позади:

Button.Enabled = HttpContext.Current.User.IsInRole("Admin");
person Akram Shahda    schedule 13.05.2011
comment
спасибо, это сделано. У меня нет слов, чтобы объяснить, насколько этот сайт повышает мою уверенность. Еще раз спасибо - person iti; 16.05.2011

В Page_Load после проверки роли вы можете установить для параметра IsEnabled для кнопки значение False.

например buttonLogin.Enabled = (IsUserInRole(Admin));

person kanchirk    schedule 13.05.2011

Либо я что-то упускаю, либо решение простое:

button.Enabled = false;
person SirViver    schedule 13.05.2011
comment
кнопка должна быть включена для администратора, а не для члена. как это сделать? - person iti; 13.05.2011

Я предполагаю, что вы используете элемент управления кнопки ASP.NET — если да, то вам нужно установить свойства кнопки Visible и Enabled на false

person jcvandan    schedule 13.05.2011
comment
кнопка должна быть включена для администратора, а не для члена. как это сделать? - person iti; 13.05.2011

Основная проблема, с которой вы столкнулись, — это решетка: <%# используется для идентификации привязки. Если вы не вызываете это в gridview или formview или что-то в этом роде, это не сработает. Я бы порекомендовал установить его в коде позади, как это было предложено @Muhammad Akhtar, но если вы чертовски склонны к коже при использовании стороны html, вероятно, это должно быть:

Enabled='<%= HttpContext.Current.User.IsInRole("Admin").ToString() %>'
person Joel Etherton    schedule 13.05.2011

person    schedule
comment
+1: это действительно нужно сделать в коде позади. Это можно сделать на стороне html, но на самом деле нет смысла делать это таким образом. Это еще менее читаемо/обслуживаемо ИМО. - person Joel Etherton; 13.05.2011