Ir ao conteúdo

Posts recomendados

Postado

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");}
}

 

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...