Array
(
)

Como resolver o erro: InvalidOperationException was unhandled by user code

Ricardo
   - 20 mai 2016

Bom dia, estou tentando fazer insert e está dando esse erro:

Citação:

InvalidOperationException was unhandled by user code
An exception of type 'System.InvalidOperationException' occurred in System.Web.Mvc.dll but was not handled in user code
Additional information: The ViewData item that has the key 'IDArea' is of type 'System.Int32' but must be of type 'IEnumerable<SelectListItem>'.

Esse comando estava funcionando e parou de repente, eu já recriei a view mais o erro continua. O comando de update está funcionando... na view ele marca esse trecho:
#Código

Erro de Origem: 


Linha 51:             @Html.LabelFor(model => model.IDArea, "IDArea", htmlAttributes: new { @class = "control-label col-md-2" })
Linha 52:             <div class="col-md-10">
Linha 53:                 @Html.DropDownList("IDArea", null, htmlAttributes: new { @class = "form-control" })
Linha 54:                 @Html.ValidationMessageFor(model => model.IDArea, "", new { @class = "text-danger" })
Linha 55:             </div>

meu controller está assim:
#Código
]//Adicionar
        public ActionResult Adicionar()
        {
            ViewBag.IDArea = new SelectList(db.Areas, "IDArea", "Nome");
            ViewBag.IDCargo = new SelectList(db.Cargos, "IDCargo", "Nome");
            ViewBag.IDEmpregador = new SelectList(db.Empregadores, "IDEmpregador", "Nome");

            return View();
        }

        [HttpPost]
        public ActionResult Adicionar(Funcionarios funcionario, Eventos evento)
        {
            if (ModelState.IsValid)
            {
                funcionario.StatusFunc = "Ativo";
                funcionario.UltimaAtualizacao = DateTime.Now;

                db.Funcionarios.Add(funcionario);
                db.SaveChanges();

                //alimenta tabela Eventos
                var pegaID = db.Funcionarios.First(x => x.Registro == funcionario.Registro);

                evento.IDTipoDeEvento = 5; //5 = Admissão
                evento.IDFuncionario = pegaID.IDFuncionario;
                evento.NovoValor = "Ativo";
                evento.DataAlteracao = DateTime.Now;

                db.Eventos.Add(evento);
                db.SaveChanges();

                return RedirectToAction("FuncionariosAtivos");
            }

            return View(funcionario);
        }

No update os DropDownList funcionam normalmente...
A única coisa que fiz, foi instalar o jquery via package manage console, pois ele não está aceitando as datas no padrão do brasil (dd/mm/aaaa) ele quer as datas no padrão (mm/dd/aaaa), mesmo eu tendo adicionado o padrão que eu quero no model.
Alguém pode me ajudar? na outra vez que deu isso eu tive que refazer o projeto todo.... mas isso não é uma boa solução....
Obrigado.

Ricardo
   - 20 mai 2016

Encontrei o erro.... mas estou achando estranho... o erro está em um expressão regular que eu coloquei no modelo, a expressão verifica se a data foi digitada corretamente...

#Código

[RegularExpression((@"^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/\d{4}$"), ErrorMessage = "Data invalida")]


segue o o código completo da minha classe de modelo de funcionário, muita coisa não está funcionando ai, não sei por que....

#Código
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;

namespace AppFuncionarios.Models
{
    [MetadataType(typeof(FuncionariosMetadados))]
    public partial class Funcionarios
    {
    }

    public class FuncionariosMetadados
    {
        [Required(ErrorMessage = "Campo obrigatório")]
        //[RegularExpression("^([a-zA-Z0-9 .&'-]+)$", ErrorMessage = "Name invalido")]
        public string Nome { get; set; }


        public Nullable<int> Registro { get; set; }

        public int Ramal { get; set; }

        //[Display(Name = "Nascimento")]
        //[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
        //[DataType(DataType.Date, ErrorMessage = "Data em formato inválido")]
        //public Nullable<System.DateTime> DTNasc { get; set; }

        [Display(Name = "Nascimento")]
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
        //[RegularExpression((@"^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/\d{4}$"), ErrorMessage = "Data invalida")]
        //[DataType(DataType.Date, ErrorMessage = "Data em formato inválido")]
        public Nullable<System.DateTime> DTNasc { get; set; }

        [Display(Name = "Área")]
        public Nullable<int> IDArea { get; set; }

        [Display(Name = "Cargo")]
        public Nullable<int> IDCargo { get; set; }

        [Display(Name = "Empregador")]
        public Nullable<int> IDEmpregador { get; set; }

        [Display(Name = "Adimissão")]
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
        //[DataType(DataType.Date, ErrorMessage = "Data em formato inválido")]
        public Nullable<System.DateTime> DTAdmissao { get; set; }

        [Display(Name = "Entrada")]
        public Nullable<System.TimeSpan> HrEntra { get; set; }

        [Display(Name = "Saída")]
        public Nullable<System.TimeSpan> Hrsai { get; set; }

        [Display(Name = "Status")]
        public string StatusFunc { get; set; }

        [Display(Name = "Demissão")]
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
        //[DataType(DataType.Date, ErrorMessage = "Data em formato inválido")]
        public Nullable<System.DateTime> DataDesligamento { get; set; }

        [Display(Name = "Atualizado")]
        [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
        public Nullable<System.DateTime> UltimaAtualizacao { get; set; }

        [Display(Name = "Tipo")]
        public string TipoFunc { get; set; }

        //[InputMask("99.999.999/9999-99")]
        public string CPF { get; set; }
    }
}