I'm assuming you're using Entity Framework to abstract the database. An example of Action
in Controller would look something like this:
public ActionResult Inscrever(int id) // Este id é o id do curso
{
// Aqui penso que ocorreria uma seleção do aluno logado.
// Depois uma associação do aluno ao curso.
// Suponho que o curso seria colocado em uma variável "curso".
curso.QuantidadeVagas--;
context.Entry(curso).State = EntityState.Modified;
context.SaveChanges();
return RedirectToAction("AlgumaAction", "AlgumController");
}
Just as there are various bank operations you do here (select student, select course, create association, modify course), I recommend you use transactional scope . Here it would look like this:
public ActionResult Inscrever(int id)
{
using (var scope = new TransactionScope())
{
// Aqui penso que ocorreria uma seleção do aluno logado.
// Depois uma associação do aluno ao curso.
// Suponho que o curso seria colocado em uma variável "curso".
curso.QuantidadeVagas--;
context.Entry(curso).State = EntityState.Modified;
context.SaveChanges();
scope.Complete();
}
return RedirectToAction("AlgumaAction", "AlgumController");
}
For on-screen viewing, it's trivial: updating the course value will reflect the presentation automatically:
@model Curso
<h1>Quantidade de Vagas: @Model.QuantidadeVagas</h1>
An example of Ajax would be a button like this:
<button id="decremento" name="1">Decrementar</button>
Add jQuery to your Views ( search for Bundling ) and type something like this:
<script>
$(document).ready(function() {
$("#decremento").click(function() {
$.ajax({
type: "POST",
url: '/MeuController/Inscrever/' + $(this).attr("name")
});
});
});
</script>