Impedir que o usuário digite várias vezes o mesmo registro no cadastro em ASP.NET MVC Core 2.0 com SQL Server
03/08/2018
0
Tenho uma aplicação ASP.NET MVC Core 2.0 usando banco de dados SQL Server. Tenho um cadastro básico de combustíveis. Exemplo: Alcool, Gasolina, Diesel, etc...
Quero impedir que o usuário grave dois registros duplicados, por exemplo Alcool mais de uma vez no banco.
Estou tentando por DataAnnotations marcar o campo como Unique, que dai o banco não aceitaria esse registro duplicado. Essa seria minha primeira opção.
Minha segunda opção, na Controller de Combustiveis criei uma validação se o Combustível já foi registrado, mas não consegui ainda mostrar a mensagem na tela de cadastro. O registro não é salvo, mas não mostra nenhuma mensagem para o usuário.
Podem me ajudar a restringir esse registro duplicado? Mesmo que seja uma opção diferente das que coloquei acima, o importante seria mostrar uma mensagem para o usuário e impedir essa duplicidade de cadastro.
Quero impedir que o usuário grave dois registros duplicados, por exemplo Alcool mais de uma vez no banco.
Estou tentando por DataAnnotations marcar o campo como Unique, que dai o banco não aceitaria esse registro duplicado. Essa seria minha primeira opção.
Minha segunda opção, na Controller de Combustiveis criei uma validação se o Combustível já foi registrado, mas não consegui ainda mostrar a mensagem na tela de cadastro. O registro não é salvo, mas não mostra nenhuma mensagem para o usuário.
Podem me ajudar a restringir esse registro duplicado? Mesmo que seja uma opção diferente das que coloquei acima, o importante seria mostrar uma mensagem para o usuário e impedir essa duplicidade de cadastro.
Rodolfo Camargo
Curtir tópico
+ 0
Responder
Posts
03/08/2018
Elias Ribeiro
Boa tarde tudo bem?
Tenta modificar o banco deixando o atributo como unique.
E coloca um try catch personaliza a msg de erro falando que o item ja esta cadastro.
Tenta modificar o banco deixando o atributo como unique.
E coloca um try catch personaliza a msg de erro falando que o item ja esta cadastro.
Responder
03/08/2018
Rodolfo Camargo
Conseguir fazer usando ModelState.AddModelError<br />
<br />
[HttpPost]<br />
[ValidateAntiForgeryToken]<br />
public async Task<IActionResult> Create([Bind("Id,Nome")] Combustivel combustivel)<br />
{<br />
if (_context.Combustivel.Any(c => c.Nome == combustivel.Nome))<br />
{<br />
ModelState.AddModelError("Nome", $"Esse Combustível já está registrado.");<br />
} <br />
<br />
if (ModelState.IsValid)<br />
{<br />
combustivel.Id = Guid.NewGuid();<br />
_context.Add(combustivel);<br />
await _context.SaveChangesAsync();<br />
return RedirectToAction(nameof(Index));<br />
}<br />
return View(combustivel);<br />
}
<br />
[HttpPost]<br />
[ValidateAntiForgeryToken]<br />
public async Task<IActionResult> Create([Bind("Id,Nome")] Combustivel combustivel)<br />
{<br />
if (_context.Combustivel.Any(c => c.Nome == combustivel.Nome))<br />
{<br />
ModelState.AddModelError("Nome", $"Esse Combustível já está registrado.");<br />
} <br />
<br />
if (ModelState.IsValid)<br />
{<br />
combustivel.Id = Guid.NewGuid();<br />
_context.Add(combustivel);<br />
await _context.SaveChangesAsync();<br />
return RedirectToAction(nameof(Index));<br />
}<br />
return View(combustivel);<br />
}
Responder
Clique aqui para fazer login e interagir na Comunidade :)