Как включить и отключить кнопку на основе роли пользователя? - PullRequest
4 голосов
/ 13 мая 2011

У меня есть роль «член» и еще один «администратор» на веб-сайте 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") %>' /> 

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

Ответы [ 6 ]

6 голосов
/ 13 мая 2011

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

Либо в html:

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

, либо в коде:

Button.Enabled = HttpContext.Current.User.IsInRole("Admin");
6 голосов
/ 13 мая 2011
if (HttpContext.Current.User.IsInRole("member"))
{
  //enable/disable here
}
3 голосов
/ 13 мая 2011

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

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

2 голосов
/ 13 мая 2011

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

button.Enabled = false;
1 голос
/ 13 мая 2011

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

Enabled='<%= HttpContext.Current.User.IsInRole("Admin").ToString() %>'
1 голос
/ 13 мая 2011

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

...