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.
2 Comments
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?
Gostei desse post, serviu para esclarecer algumas dúvidas que surgiram ao pesquisar sobre o tema. Valeu!