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 ==> VIEWO 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
Postar um comentário