2014-12-05 3 views
0

Я пытаюсь установить некоторую переменную сеанса из возврата SqlDataSource. Я могу установить значение в поле label/textbox/hidden, но я не могу установить переменную сеанса.Установить переменную сеанса из SqlDataSource

Я использую функцию page_load, чтобы попытаться установить их.

protected void Page_Load(object sender, EventArgs e) 
{   
     this.Session["UserName"] = User.Identity.Name; 
     this.Session["EmplID"] = Eval("EmplID"); 
} 

У меня есть SqlDataSource:

<asp:SqlDataSource ID="SQLGetEmplID" runat="server" 
      ConnectionString="<%$ ConnectionStrings:MAFapp %>" 
      SelectCommand="SELECT DISTINCT EmplID, Status FROM Employees WHERE (intLogin = @UserName) AND (Dept = N'Eng' OR Dept = N'IS') AND (Status = N'Active')"> 
    <SelectParameters> 
     <asp:SessionParameter Name="UserName" SessionField="UserName" /> 
    </SelectParameters> 
</asp:SqlDataSource> 
+0

почему бы кто-то дать отрицательный голос? это плохой вопрос? если да, то почему? – Beengie

+0

быстрый вопрос .. вы шагнули через код ..? где вы возвращаете строки выбранного EmplID из User.Identity.Name ..? Мне интересно, как вы разбираете User.Identity.Name, можете ли вы показать весь соответствующий код и то, что имя возвращается, как .. это, например, 'DomainName \ Beebgie', тогда вам нужно разделить User.Identity .Имя и возвращаем значение в позиции массива [1] Используете ли вы 'PricnipalContext' – MethodMan

+0

User.Identity.Name возвращает логин без домена. Да, есть поле метки, которое обращается к EmplID из SQLGetEmplID, но я хочу удалить его, поскольку пользователю не нужно иметь доступ к его идентификатору. Я пытаюсь исправить беспорядок, который был передан мне. – Beengie

ответ

0

Альтернативой то, что вы делаете, если ваш User.Identity.Name

string fullUserName = null; 
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain)) 
{ 
    using (UserPrincipal user = UserPrincipal.FindByIdentity(pc,User.Identity.Name)) 
    { 
     if (user != null) 
     { 
      fullUserName = user.DisplayName;//this can be what ever you like 
     } 
    } 
} 
+0

Я добавил код, но получил ошибку для 'PrincipalContext'. Я провел некоторое исследование и увидел, что мне нужно включить ссылку на сборку' System.DirectoryServices.AccountManagement'. Я добавил ее, но я все еще появляется ошибка 'CS0246: имя типа или пространства имен 'PrincipalContext' не может быть найдено (вы не указали директиву using или ссылку на сборку?)' – Beengie

+0

Получает ли доступ к входу Windows или это все еще доступ к входу в интрасеть? – Beengie

+0

Если это работает для обоих окон и Интернета, то разница в Интернете вы бы получили что-то вроде 'domainname \ username', тогда вам нужно будет использовать функцию split для получения строки [] позиции второго элемента, поэтому в' C# ', что например, будет someStringArray [1] .. вы пробовали его в небольшом «ConsoleApp», например, вы увидите, что я имею в виду .. дайте мне знать, если это поможет – MethodMan

Смежные вопросы