Как в Silverlight отобразить информацию о пользователе? - PullRequest
1 голос
/ 14 декабря 2011

Я хочу отобразить информацию о пользователе на странице в приложении Silverlight.Я использую бизнес-шаблон в качестве отправной точки и использую проверку подлинности Windows в качестве метода проверки подлинности.

Если я просто делаю следующее, я получаю ошибки о том, что я еще не вошел в систему (WebContext.Current.Пользовательский объект еще не загружен):

public Home()
{
    InitializeComponent();

    this.Title = ApplicationStrings.HomePageTitle;

    txtOutput.Text = WebContext.Current.User.Name + Environment.NewLine;

    foreach (string Role in WebContext.Current.User.Roles)
    {
        this.txtOutput.Text += Role + Environment.NewLine;
    }
}

Если я делаю следующее, все загружается нормально при первой загрузке страницы, все в порядке, однако, если я изменяю страницы и возвращаюсь, это не такзагрузить, потому что я уже вошел в систему:

public Home()
{
    InitializeComponent();

    this.Title = ApplicationStrings.HomePageTitle;

    WebContext.Current.Authentication.LoggedIn += new EventHandler<AuthenticationEventArgs>(Authentication_LoggedIn);
}

void Authentication_LoggedIn(object sender, AuthenticationEventArgs e)
{
    txtOutput.Text = WebContext.Current.User.Name + Environment.NewLine;

    foreach (string Role in WebContext.Current.User.Roles)
    {
        this.txtOutput.Text += Role + Environment.NewLine;
    }
}

Единственный способ заставить это работать - использовать следующий код, который для меня немного грязный:

    public Home()
    {
        InitializeComponent();

        this.Title = ApplicationStrings.HomePageTitle;

        if (WebContext.Current.User.IsAuthenticated)
        {
            Authentication_LoggedIn(null, null);
        }
        else
        {
            WebContext.Current.Authentication.LoggedIn += new EventHandler<AuthenticationEventArgs>(Authentication_LoggedIn);
        }
    }

    void Authentication_LoggedIn(object sender, AuthenticationEventArgs e)
    {
        txtOutput.Text = WebContext.Current.User.Name + Environment.NewLine;

        foreach (string Role in WebContext.Current.User.Roles)
        {
            this.txtOutput.Text += Role + Environment.NewLine;
        }
    }

Может ли кто-нибудь указать мне правильное направление «правильного» способа сделать это.Мне нравится придерживаться лучших практик, и, похоже, это не так.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...