Seguinte galera. Tenho um web app mvc que já vem pronto do VS2017. Fiz uma conexão com o banco SQL Server 2014 (maquina com Win 7 não instala SQLServer2017) e era pra fazer um CRUD básico, mas não está gravando. Na 1ª tentativa de compilação deu erro no arquivo appsettings.json que tem esse conteúdo:
{
"AllowedHosts": "*",
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=Junina;Trusted_Connection=True;MultipleActiveResultSets=true"
},
"Logging": {
"LogLevel": {
"Default": "Warning"
}
}
}
Que quando o VS criou automatico veio só com isso:
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*"
}
Adicionei as informações da String de conexão com o banco ( “ConnectionStrings”: {
“DefaultConnection”: “Server=(localdb)\MSSQLLocalDB;Database=Junina;Trusted_Connection=True;MultipleActiveResultSets=true”
},)
E tem o controller que executa a gravação das informações recebidas na view dadas pelo usuário:
HomeController.cs
/<em>imports e outras coisas</em>/
/*ACESSO AO BANCO PARA INSERÇÃO DE DADOS*/
[HttpPost]
public IActionResult Create_Post(Aluno aluno)
{
if (ModelState.IsValid)
{
string connectionString = Configuration["ConnectionStrings:DefaultConnection"];
using (SqlConnection connection = new SqlConnection(connectionString))
{
string sql = $"Insert Into Aluno (Nome, Classe, RA) Values ('{aluno.Nome}', '{aluno.Classe}','{aluno.RA}')";
using (SqlCommand command = new SqlCommand(sql, connection))
{
command.CommandType = CommandType.Text;
connection.Open();
command.ExecuteNonQuery();
connection.Close();
}
return RedirectToAction("Index");
}
}
else
return View();
}
e no Index.cshtml eu coloquei os inputs e botão para gravação:
Index.cshtml
@model Aluno
@{
Layout = "_Layout";
var title = "Criar Aluno";
ViewData["Title"] = title;
}
<style>
.input-validation-error {
border-color: red;
}
</style>
<h2>@title</h2>
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<form class="m-1 p-1" method="post">
<div class="form-group">
<label asp-for="Nome"></label>
<input asp-for="Nome" class="form-control" />
<span asp-validation-for="Nome" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Classe"></label>
<input asp-for="Classe" type="text" class="form-control" />
<span asp-validation-for="Classe" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="RA"></label>
<input asp-for="RA" type="text" class="form-control" />
<span asp-validation-for="RA" class="text-danger"></span>
</div>
<button type="submit" class="btn btn-primary">Enviar</button>
</form>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js"></script>
E tem também a classe Aluno.cs que é o modelo de dados:
Aluno.cs
public class Aluno
{
[Required]
public int Id { get; set; }
[Required]
public string Nome { get; set; }
[Required]
[SkillsValidate(Allowed = new string[] { "ASP.NET Core", "ASP.NET MVC", "ASP.NET Web Forms" }, ErrorMessage = "You skills are invalid")]
public string Classe { get; set; }
[Required]
public string RA { get; set; }
[Required]
public DateTime DataNasc { get; set; }
}
OBSERVAÇÃO: Coloquei o [Required] mas não funciona. Se deixar em branco ele não reclama. Acho que deve ser alguma coisa com o jquery, que deveria ver isso…
E roda legal mas ao consultar o banco para ver se tem alguma informação gravada não aparece. Gostaria da ajuda de vcs no seguinte sentido: colocar em algum ponto uam informação para ver se esta ou não conectando no banco e se esta (conectando) esta gravando.
Caso precisem de mais informações estou a disposição. Desde já obrigado.