Ir para conteúdo
thiagojoseh_

[Resolvido] Inserir no banco de dados os valores descritos em duas dropdownlist << C# ASP.NET Web Forms >>

Recommended Posts

Olá, pessoal

 

Sou novo aqui no fórum e iniciante em C # ASP.NET. Estou com a seguinte situação, efetuei o cadastro de duas Classes "Aluno" e "Curso" através do MVC e, agora, tenho que cadastrar ambos em uma nova classe "Matricula".

 

Matricula.cs

 

 public class Matricula
    {
        [Key]
        public int MatriculaID { get; set; }

        public int AlunoID { get; set; }
        public int CursoID { get; set; }
    }

 

Contexto.cs

 

using System.Data.Entity;

namespace WebFormsMVC.Models
{
    public class Contexto : DbContext
    {

        public DbSet<Aluno> Alunos { get; set; }
        public DbSet<Curso> Cursos { get; set; }
        public DbSet<Matricula> Matriculas { get; set; }

    }
}

 

Preciso realizar este cadastro em Matricula através do WebForms, ou seja, criei duas dropdownlist, uma para exibir Aluno e outra para Curso. Em seguida, um botão para Salvar os dados selecionados em Matricula. OBS.: Estou utilizando LocalDB.

 

No método do botão salvar, eu tentei colocar o seguinte código para salvar:

 

 public partial class Default : System.Web.UI.Page
    {
        private Contexto db = new Contexto();

        protected void Page_Load(object sender, EventArgs e)
        {
            ddlAlunos.DataTextField = "Nome";
            ddlAlunos.DataValueField = "AlunoID";
            ddlAlunos.DataSource = db.Alunos.ToList();
            ddlAlunos.DataBind();

            ddlCursos.DataTextField = "Descricao";
            ddlCursos.DataValueField = "CursoID";
            ddlCursos.DataSource = db.Cursos.ToList();
            ddlCursos.DataBind();

        }

        protected void Button2_Click(object sender, EventArgs e) // Botão Salvar
        {
               db.Matriculas.Add(ddlAlunos.SelectedItem.Value); 

               db.SaveChanges();

        }
    }

 

Em vermelho, o erro que está retornando... "não é possível converter de "string" para "WebFormsMVC.Models.Matricula"". Preciso apenas passar a ID dos valores selecionados na dropdownlist para a tabela Matricula no banco de dados, para depois exibí-los em uma nova tabela com os Alunos já cadastrados nos Cursos.

 

Desde já agradeço.

Muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites
db.Matriculas.Add(new Matricula {
	CursoId = xxx,
	AlunoId = xxx
});

Porque você tem que add uma matrícula na matrícula, e não uma string.

  • Obrigado! 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
8 minutos atrás, itlpps disse:

db.Matriculas.Add(new Matricula {
	CursoId = xxx,
	AlunoId = xxx
});

Porque você tem que add uma matrícula na matrícula, e não uma string.

Obrigado ITLPPS... no entanto, o que tenho que passar para Curso ID e Aluno ID seriam ddlAlunos.SelectItem.Value. Sendo um para Curso e outro para Aluno?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
12 minutos atrás, thiagojoseh_ disse:

Obrigado ITLPPS... no entanto, o que tenho que passar para Curso ID e Aluno ID seriam ddlAlunos.SelectItem.Value. Sendo um para Curso e outro para Aluno?

 

Pelo que entendi do seu Page_Load, tem um dropdown pra cada, então sim... Só converter pra int.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
9 horas atrás, itlpps disse:

Pelo que entendi do seu Page_Load, tem um dropdown pra cada, então sim... Só converter pra int.

 

Realizei o que me informou e o código ficou assim:

 

protected void Button2_Click(object sender, EventArgs e)
        {

            db.Matriculas.Add(new Matricula
            {

                AlunoID = Convert.ToInt16(ddlAlunos.SelectedValue),
                CursoID = Convert.ToInt16(ddlCursos.SelectedValue)
                
           });

            db.SaveChanges();
        }

 

A principio, acredito que esteja OK, o compilador não acusou nenhum erro. Porém, estou tentando executar meu arquivo Default.aspx para testar a funcionalidade da página, mas está retornando o erro abaixo. Um detalhe importante, abri um novo projeto apenas para rodar uma Default.aspx que ele gera automaticamente, ainda assim retorna o erro. Qualquer página .aspx criada seja num projeto existente ou novo, o problema é apresentado.

 

Sabe como posso resolver?

 

URL: http://localhost:52684/WebForms/Default

Erro de Servidor no Aplicativo '/'.


Não é possível encontrar o recurso.

Descrição: HTTP 404. O recurso que você está procurando (ou uma de suas dependências) não pôde ser removido, seu nome foi alterado ou está temporariamente indisponível. Examine o URL e certifique-se de que está digitado corretamente.

URL solicitada: /WebForms/Default

 


Informações sobre a Versão: Microsoft .NET Framework Versão:4.0.30319; Versão do ASP.NET:4.7.2106.0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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

  • Conteúdo Similar

    • Por Jonas Ribeiro Nascimento
      Estou criando meu próprio mvc php para adquirir mais conhecimento.
      Mas estou me deparando com uma coisa muita estranha, eu perco a $_SESSION de uma view para outra view
      Fiz um codigo simples pra testar.a.php ----- view a.php
      <?php session_start(); $_SESSION['teste'] = 'Funcionou'; echo $_SESSION['teste']; ?> <?php session_start(); echo $_SESSION['teste']; // Notice: Undefined variable: _SESSION in var_dump($_SESSION); // Notice: Undefined variable: _SESSION in NULL ?> <?php namespace Sis\Classes; use App\Model\ClassLogin; use Sis\Traits\TraitGetIp; class ClassSession { private $login; private $timeSession = 1200; private $timeCanary = 300; public function __construct(){ if(session_id() == ''){ ini_set("session.save_handler", "files"); //Cabeçalhos somente atraves de arquivos ini_set("session.use_cookies", 1); //Habilita o uso de cookies ini_set("session.use_only_cookies", 1); //Só pode habilitar a seção atraves de coockies ini_set("session.cookie_domain", DOMAIN); //Só aceita coockies vindo do nosso sistema ini_set("session.cookie_httponly", 1); //Só aceita script php e não deixa o javascript alterar o sistema if(DOMAIN != "localhost"){ ini_set("session.cookie_secure", 1); //Para trabalhar com o SSL do servidor ativo } /*Criptografia das nossas sessions*/ ini_set("session.entropy_length", 512); // ini_set("session.entropy_file","/dev/urandom"); ini_set("session.hash_function", "sha256"); ini_set("session.hash_bits_per_character", 5); session_start(); } $this->login = new ClassLogin(); } #Proteger contra roubo de sessão public function setSessionCanary($par=null){ session_regenerate_id(true); if($par == null){ $_SESSION['canary']=[ "birth" => time(), "IP" => TraitGetIp::getUserIp() //Pega o ip do usuario ]; }else{ $_SESSION['canary']['birth']=time(); } } #Verificar a integridade da sessão public function verifyIdSessions(){ if(!isset($_SESSION['canary'])){ $this->setSessionCanary(); } if($_SESSION['canary']['IP'] !== TraitGetIp::getUserIp()){ $this->destructSessions(); $this->setSessionCanary(); } if($_SESSION['canary']['birth'] < time() - $this->timeCanary){ $this->setSessionCanary("Time"); } } #Setar as sessões do nosso sistema public function setSessions($Email){ $this->verifyIdSessions(); $_SESSION['Login'] = true; $_SESSION['Time'] = time(); $_SESSION['Nome'] = $this->login->getIssetSession($Email)['data']['Nome']; $_SESSION['Email'] = $this->login->getIssetSession($Email)['data']['Email']; $_SESSION['Permissoes'] = $this->login->getIssetSession($Email)['data']['Permissoes']; } #Validar as páginas internas do sistema public function verifyInsideSession(){ $this->verifyIdSessions(); if(!isset($_SESSION['Login']) || !isset($_SESSION['Permissoes']) || !isset($_SESSION['canary'])){ $this->destructSessions(); header("Location: ".DIRPAGE."NaoAutorizado"); }else{ if($_SESSION['Time'] >= time() - $this->timeSession){ $_SESSION['Time']=time(); }else{ $this->destructSessions(); header("Location: ".DIRPAGE."NaoAutorizado"); } } } #Destruir as sessions existentes public function destructSessions(){ foreach (array_keys($_SESSION) as $key) { unset($_SESSION[$key]); } } #testar public function testarSessions(){ echo 'oiiiiiiiiiiiiiiiiiiiiiiooooooooooo'; } }

    • Por Eduarda Lang Duarte
      O windows diz que não pode encontrar programas da Office 2010, eu ja tentei ir no Regedit e renomear o Office como Office.old e não funcionou, tentei reparar mas sempre aparece que não acha uma dll diferente. Eu já vi várias pessoas com o mesmo problema que eu, e disseram que é vírus, como eu resolvo? É minha primeira vez nesse site, se tiver algo errado, me falem que eu arrumo.
    • Por thewesker
      Estou escrevendo uma aplicação MVC em PHP e a estrutura de diretórios é a seguinte:
      - root ¬ app ¬ controllers ¬ models ¬ views ¬ core ¬ config ¬ public Na pasta “app” fica as camadas MVC. Em “controllers” coloco classes que vão receber dados e acionar models e/ou renderizar views. Nos “models” coloco basicamente as entidades do banco de dados e suas operações. Em “views” coloco as páginas com código html + php para exibição de dados No “core” coloco classes e/ou arquivos genéricos (tenho planos de usar essa mesma base para desenvolver outras aplicações futuramente, uma espécie de microframework.) No entanto surgiu duas classes um pouco diferentes, uma delas trabalha com datas e realiza operações como conversão e cálculo entre datas, a outra cria e gerencia múltiplas threads. Tenho dúvida em qual camada devo colocá-las, já que nenhuma delas fazem acesso a banco de dados ou arquivos e nem emite saídas, apenas retornam valores.
       
      Devo criar uma camada adicional? Qual? Devo colocá-la em um das camadas já existentes?  
      Obs: qualquer informação adicional que possa ser útil é sempre bem-vinda!
    • Por EduardoLenz
      Olá, pessoal,
       
      Mexo com microcontroladores, antigamente com PIC e agora com ARM (plataforma LPCXpresso). 
      Ambos utilizam a linguagem C. 
       
      Meu problema é o seguinte: Preciso converter um caractere que vem da UART (porta de comunicação). No PIC havia uma função pronta para tal, no ARM não. 
       
      O caractere chega assim, por exemplo: P123 (tudo junto), e eu queria separar em:
      dado_recebido[]={'P', '1', '2', '3'}; 
      Para poder utilizar um switch 
      switch(dado_recebido[0])
      {
      case 'P':....
      }
       
      alguém tem alguma ideia de como posso fazer a conversão? 
       
      Agradeço desde já. 
    • Por Wesley Balestrini
      Caros, bom dia.
      Fiquei com dúvida, mas acho que estou postando no local correto.
       
      Sou iniciante no desenvolvimento Web (front e back). Gostei muito do padrão MVC (PHP) e por isso descobri a existência do Cake PHP.
       
      Percebi grande dificuldade em usar estas formas de programar, principalmente por não entender muito de orientação a objeto. Por isso estou fazendo um curso sobre.
       
      Mas ainda resta dúvidas: um iniciante DEVE usar padrões (acho que sim) como MVC e frameworks (não tenho certeza) como CakePHP?
       
      Principalmente no caso de frameworks, me dá a sensação que estou deixando de aprender certas partes da linguagem, pois o framework faz elas por mim. Sei que são importantes para ganho de tempo e otimização, mas como iniciante tenha meus receios.
       
      Alguém pode me ajudar? Conte sua experiência do início de carreira.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.