Я пытаюсь заполнить DropDownList
на основе ролей.У меня есть представление в SQL
со значением и текстом каждого элемента в зависимости от роли пользователя (проверка подлинности Windows), и я могу заполнить DropDownList
, если пользователь был во всех ролях:
using (var db=new GPSE_2.DAL.GPSE2Entities())
{
var locations = (from loc in db.LocationLOBViews
orderby loc.LocationNumber
select new { loc.DataValue, loc.DataText});
ddlShops.DataValueField = "DataValue" ;
ddlShops.DataTextField = "DataText";
ddlShops.DataSource = locations.ToList();
DataBind();
}
Я хотел бы добавлять элементы, членом которых является только зарегистрированный пользователь.Пользователи могут быть в нескольких группах (ролях).
Например, вошедший в систему пользователь находится в группе с именем Location 01 LOB 100
, а также в группе с именем Location 01 LOB 200
, а также в Location o2 LOB 100
.В DropDownList
.
должны отображаться только эти параметры. Мне удалось просмотреть роли, которые выполняет пользователь, с помощью приведенного ниже кода.
string UPN = UserPrincipal.Current.UserPrincipalName.ToString();
WindowsIdentity wi = new WindowsIdentity(UPN);
string GroupName;
foreach (IdentityReference group in wi.Groups)
{
GroupName = group.Translate(typeof(NTAccount)).ToString();
if (GroupName.Contains("Location 01 LOB 100"))
{
var item = new ListItem
{
Text = "Location 01 LOB 100",
Value = "01,100"
};
ddlShops.Items.Add(item);
}
}
Теперь я пытаюсь объединить2 Я столкнулся с проблемами при добавлении loc.DataValue и loc.DataText в DDL, если запрос возвращает результаты.Вот где я застрял, он добавляет строку в кавычки вместо значений.
using (var db = new GPSE_2.DAL.GPSE2Entities())
{
string UPN = UserPrincipal.Current.UserPrincipalName.ToString();
WindowsIdentity wi = new WindowsIdentity(UPN);
string GroupName;
foreach (IdentityReference group in wi.Groups)
{
GroupName = group.Translate(typeof(NTAccount)).ToString();
var locations = (from loc in db.LocationLOBViews
where loc.DataValue.Contains(GroupName)
orderby loc.LocationNumber
select new { loc.DataValue, loc.DataText });
if (locations !=null)
{
var item = new ListItem
{
Text = "DataText",
Value = "DataValue"
};
ddlShops.Items.Add(item);
}
}
}
Спасибо,
-Doug