Segundo passo para codar do zero ASP.NET C# MVC Microsoft Visual Studio

Depois de fazer o primeiro passo que foi preparar a conexão com a base de dados, criaremos nesse passo a  conversa da camada controller e view.

https://sistemastigre.blogspot.com/2024/01/iniciar-codar-do-zero-com-microsoft.html

 1. CONTROLLER ==> VIEW
O controller é responsável de responder solicitações de páginas e através das actions responder com uma view.

A COMUNICAÇÃO do CONTROLLER e da VIEW são feitas pelas actions, o metódo action do controller será executada e retornará uma view.

a) O metódo action do controller chama a view

    a.1 Enviando com Objeto de uma classe como parâmetro 

Controller
public IActionResult Index()
{
Usuario usuario = new Usuario();
usuario.Id = "1";
usuario.Nome = "Eliomar Aguiar de Souza";

return View(usuario);
}
Observe que no metodo retornado como view é passado como parametro o objeto usuario e na view ele é utilizado como model conforme no exemplo abaixo.

A view recebe o parametro objeto utilizando o código @model + Classe conforme o exemplo abaixo:

View
@model Usuario

@{
ViewData["Title"] = "Home Page";
}

<div><h1>Seja Bem Vindo @Model.Nome</h1></div>
</br>
<div><h3>Seu código é @Model.Id</h3></div>

Importante: Para cada view só é possível usar um model por view.

  a.2  Enviando para a view um ViewBag
A ViewBag é um recurso que pode armazenar uma lista e variáveis.

Controller "Enviar o ViewBag"

List<Usuario> usuarioLst = new List<Usuario>();

string constr = SqlManager2.GetSQL(); //Classe stática que traz a string de conexão do SQL
using (SqlConnection con = new SqlConnection(constr))
{

string query = "SELECT * FROM Usuarios Where Nome='"+ nome + "'";
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.Connection = con;
con.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
usuarioLst.Add(new Usuario
{
Id = Convert.ToInt32(sdr["Id"]),
Nome = Convert.ToString(sdr["Nome"]),
Senha = Convert.ToString(sdr["Senha"])
});
}
}
con.Close();
}
}
usuarioLst.Add(new Usuario());
ViewBag.SistemasComerciais = usuarioLst;


return View();


View  "Receber o ViewBag"

<div>
@Html.DropDownList("SistemasComerciais", new SelectList(ViewBag.SistemasComerciais, "Id", "Nome", "Senha"),
htmlAttributes: new { @class = "standardSelect", multiple = "multiple" })
</div>

  a.3  Enviando para a view um List<T>

Controller  "Enviar o List<T>"

List<Usuario> usuarioLst = new List<Usuario>();

string constr = SqlManager2.GetSQL(); //Classe stática que traz a string de conexão do SQL
using (SqlConnection con = new SqlConnection(constr))
{

string query = "SELECT * FROM Usuarios Where Nome='"+ nome + "'";
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.Connection = con;
con.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{

while (sdr.Read())
{
usuarioLst.Add(new Usuario
{
Id = Convert.ToInt32(sdr["Id"]),
Nome = Convert.ToString(sdr["Nome"]),
Senha = Convert.ToString(sdr["Senha"])
});
}
}

con.Close();
}
}
usuarioLst.Add(new Usuario());
return View(usuarioLst);



View "receber o  List<T>"

.


 a.3  Chamando uma view por um  return RedirectToAction("");

Controller  "Chamando a view por redirect"
[HttpPost]
public IActionResult Login1(string login, string senha)
{
try
{
Usuario _usuario = null;

_usuario = _usuarioList.FirstOrDefault(p => p.Nome.ToLower().Equals("eliomar") && p.Senha.ToLower().Equals("123"));

if (_usuario != null)
{
TempData["userId"] = _usuario.Id;

HttpContext.Session.SetString("_Login", _usuario.Nome); //Sessão

return RedirectToAction("Home");
}
else
{
return RedirectToAction("Error");
}
}
catch (Exception ex)
{
throw ex;
}
}


b) 



2. Classe com base de dados


1. VIEW ==> CONTROLLER 

Para executar uma Action de um controller é mais simples sendo que utiliza-se os eventos dos componentes do HTML.


.


.



.

Comentários

Postagens mais visitadas deste blog

Testes unitários com Delphi - DUnit