Я пытаюсь заполнить 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);
}
}
}
Спасибо,
-Дуг