Model-View-Presenter (Parte II)

Relembrando

Na 1ª parte deste tutorial criamos uma Web Application ASP.NET e construímos uma View para Login. Nossa view é um aspx que contém campos para usuário e senha e implementa a interface ILogin.

Continuando

Na pasta App_Code adicione uma classe LoginPresenter (conforme o nome sugere) este será nosso Presenter. Seu papel será obter as informações da view e repassá-las para que as classes de negócio decidam o que fazer.

Criaremos um método de login que validará se o usuário e senha informados são válidos.

/// 
/// Classe responsável pelo “meio de campo” entre a View e o Model
/// 
public class LoginPresenter
{
    private ILogin view;
    private const string USER_SESSION_KEY = “USER_NAME”;

    public LoginPresenter() { }

    /// 
    /// Valida se o usuário e senha informados são válidos,
    /// depois armazena o nome do usuário na Session.
    /// 
    /// Retorna se o usuário e senha são validos
    public bool Login()
    {
        // Verifica se o usuário e senha informados pelo usuário são válidos
        if (View.Usuario == “admin” && View.Senha == “123″)
        {
            HttpSessionState Session = HttpContext.Current.Session;
            Session[LoginPresenter.USER_SESSION_KEY] = View.Usuario;
            return true;
        }

        return false;
    }

    /// 
    /// Referência para a View, em nosso exemplo o Default.aspx
    /// 
    public ILogin View
    {
        get { return view; }
        set { view = value; }
    }

}

Note que ao validar o usuário e senha o presenter acessa diretamente a propriedade Usuario da referência View. Ou seja, conforme a implementação da interface ILogin que fizemos em Default.aspx.cs, irá obter o usuário da propriedade Text de txtLogin

    public string Usuario
    {
        get { return txtLogin.Text; }
    ...

Para que nosso exemplo torne-se funcional, precisamos alterar a implementação de nossa view. Para isso abra novamente o arquivo Default.aspx.cs e adicione os trechos de código descritos abaixo:

    private LoginPresenter presenter;

    protected void Page_Load(object sender, EventArgs e)
    {
        presenter = new LoginPresenter();
        presenter.View = this;
    }

    private void ExibirAlerta(string mensagem)
    {
        ClientScript.RegisterClientScriptBlock(this.GetType(),
            "ExibirAlerta", "alert('" + mensagem + "')", true);
    }

    protected void btnLogin_Click(object sender, EventArgs e)
    {
        if (!presenter.Login())
            ExibirAlerta("Login Inválido!");
    }

Salve todo projeto e execute a aplicação! Para testar se a implementação funcionou informe o usuário e senha inválidos e verifique se uma mensagem de alerta é exibida. Quando o usuário e senha corretos são informados aparentemente nada acontece… Será?!

No próximo Post veremos em mais detalhes a execução de um cada dos passos.

Bookmark the permalink. Follow any comments here with the RSS feed for this post. Post a comment or leave a trackback: Trackback URL.

One Comment

  1. Gustavo Schaab
    Posted 5 de setembro de 2007 at 21:26 | Permalink

    Já havia lido um tempo atrás sobre MVP e achei interessante. Lendo o teu post, posso dizer que voltou a vontade de estudar a fundo isso.
    Você já está utilizando o mvp no seu dia-a-dia? Conseguiu constatar os benefícios?

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*