Ir ao conteúdo
  • Cadastre-se

HTML Guardar dados na base de dados atraves de uma View Create


_rsd_17

Posts recomendados

Ola, estou a tentar que o preenchimento de uma View seja guardado na base de dados, tenho varias classe entre elas tenho a classe socio, atraves dessa classe criei um controller e fiz um add-migration para criar a base de dados. Atraves desse controller criei um metodo RegistarSocio e criei uma view do tipo create chamada RegistarSocio. Mas ao preencher o formulario na web e clicar em create nao faz nada e pelo codigo que tenho no controller se estiver tudo certo regressa a view Login do controller Home.Nao estou a perceber o que esta a acontecer.... Alguem tem alguma ideia de como resolver isso ?

Tenho isto no Controller

public class SociosController : Controller
{
    private readonly GinasioContext _context;

    public SociosController(GinasioContext context)
    {
        _context = context;
    }

    // GET: Socios
    public async Task<IActionResult> Index()
    {
        return View(await _context.Socios.ToListAsync());
    }

    // GET: Socios/Details/5
    public async Task<IActionResult> Details(int? id)
    {
        if (id == null)
        {
            return NotFound();
        }

        var socios = await _context.Socios
            .FirstOrDefaultAsync(m => m.Idsocio == id);
        if (socios == null)
        {
            return NotFound();
        }

        return View(socios);
    }

    public IActionResult Perfil()
    {
        return View();
    }


    public IActionResult RegistarSocio()
    {
        return View();
    }



    // POST: Socios/Create
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> RegistarSocio([Bind("Idsocio,Email,Telefone,Fotografia,Sexo,Altura,NomeUtilizador,PesoInicial,Password,Estado")] Socios socios)
    {

        if (ModelState.IsValid)
        {
            _context.Add(socios);
            await _context.SaveChangesAsync();
            return RedirectToAction("Login", "Home");
        }

        return View(socios);
    }

    // GET: Socios/Edit/5
    public async Task<IActionResult> Edit(int? id)
    {
        if (id == null)
        {
            return NotFound();
        }

        var socios = await _context.Socios.FindAsync(id);
        if (socios == null)
        {
            return NotFound();
        }
        return View(socios);
    }

    // POST: Socios/Edit/5
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Edit(int id, [Bind("Idsocio,Email,Telefone,Fotografia,Sexo,Altura,NomeUtilizador,PesoInicial,Password,Estado")] Socios socios)
    {
        if (id != socios.Idsocio)
        {
            return NotFound();
        }

        if (ModelState.IsValid)
        {
            try
            {
                _context.Update(socios);
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!SociosExists(socios.Idsocio))
                {
                    return NotFound();
                }
                else
                {
                    throw;
                }
            }
            return RedirectToAction(nameof(Index));
        }
        return View(socios);
    }

    // GET: Socios/Delete/5
    public async Task<IActionResult> Delete(int? id)
    {
        if (id == null)
        {
            return NotFound();
        }

        var socios = await _context.Socios
            .FirstOrDefaultAsync(m => m.Idsocio == id);
        if (socios == null)
        {
            return NotFound();
        }

        return View(socios);
    }

    // POST: Socios/Delete/5
    [HttpPost, ActionName("Delete")]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> DeleteConfirmed(int id)
    {
        var socios = await _context.Socios.FindAsync(id);
        _context.Socios.Remove(socios);
        await _context.SaveChangesAsync();
        return RedirectToAction(nameof(Index));
    }

    private bool SociosExists(int id)
    {
        return _context.Socios.Any(e => e.Idsocio == id);
    }
}

Na classe tenho isto :

public partial class Socios
{
    public Socios()
    {
        Gerir = new HashSet<Gerir>();
        Mensagem = new HashSet<Mensagem>();
        Participa = new HashSet<Participa>();
        PersonalTrainer = new HashSet<PersonalTrainer>();
        Peso = new HashSet<Peso>();
        PlanosExercicios = new HashSet<PlanosExercicios>();
    }

    [Key]
    [Column("IDSocio")]
    public int Idsocio { get; set; }
    [Required]
    [Column("email")]
    [StringLength(100)]
    public string Email { get; set; }
    [Required]
    [Column("telefone")]
    [StringLength(20)]
    public string Telefone { get; set; }
    [Required]
    [Column("fotografia")]
    [StringLength(40)]
    public string Fotografia { get; set; }
    [Column("sexo")]
    public bool Sexo { get; set; }
    [Column("altura")]
    public double Altura { get; set; }
    [Required]
    [Column("nome_utilizador")]
    [StringLength(50)]
    public string NomeUtilizador { get; set; }
    [Column("peso_inicial")]
    public double PesoInicial { get; set; }
    [Required]
    [Column("_password")]
    [StringLength(20)]
    public string Password { get; set; }
    [Column("estado")]
    public int Estado { get; set; } // 1 ativo 

    [InverseProperty("IdsocioNavigation")]
    public virtual ICollection<Gerir> Gerir { get; set; }
    [InverseProperty("IdsocioNavigation")]
    public virtual ICollection<Mensagem> Mensagem { get; set; }
    [InverseProperty("IdsocioNavigation")]
    public virtual ICollection<Participa> Participa { get; set; }
    [InverseProperty("IdsocioNavigation")]
    public virtual ICollection<PersonalTrainer> PersonalTrainer { get; set; }
    [InverseProperty("IdsocioNavigation")]
    public virtual ICollection<Peso> Peso { get; set; }
    [InverseProperty("IdsocioNavigation")]
    public virtual ICollection<PlanosExercicios> PlanosExercicios { get; set; }
}

E na view em que tenho o formulario para registar na base de dados tenho

@model WebApplication1.Models.Socios

@{
    ViewData["Title"] = "RegistarSocio";
}

<p style="background-color:black"> </p>

@*Apos pedir registo e ser aceito pode se inscrever atraves desta view se for um socio *@

<p style="color:dodgerblue"> Registar-se como socio : </p>
<hr />
<div class="row">
    <div class="col-md-4">
        <form asp-action="RegistarSocio" style=" color:white">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="NomeUtilizador" class="control-label"></label>
                <input asp-for="NomeUtilizador" class="form-control" />
                <span asp-validation-for="NomeUtilizador" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="Email" class="control-label"></label>
                <input asp-for="Email" class="form-control" />
                <span asp-validation-for="Email" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="Password" class="control-label"></label>
                <input type="password" asp-for="Password" class="form-control" />
                <span asp-validation-for="Password" class="text-danger"></span>
            </div>
            <div class="form-group form-check">
                @*<label class="form-check-label">
                        <input class="form-check-input" asp-for="Sexo" /> @Html.DisplayNameFor(model => model.Sexo)
                    </label>*@
                <label asp-for="Sexo" class="control-label"></label>
                <select asp-for="Sexo" class="form-control">
                    <option value="true">Feminino</option>
                    <option value="false">Masculino</option>
                </select>
            </div>
            <br />
            <div class="form-group">
                <input type="submit" value="Criar" class="btn btn-primary" style="color:black; background-color:blue" />
            </div>
            <br />
            <br />
         
        </form>
    </div>
</div>

<div>
    <a asp-action="Index"> < Voltar </a>
</div>
<br />
<br />
<br />

@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...