No constructor without parameters has been defined for this object. , Asp net mvc

Asked

Viewed 49 times

1

When I will perform the insertion of this data in the table, this error occurs:

No constructor without parameters has been defined for this object.

Follow code with constructor:

[HttpGet]
public ActionResult Inserir ()
{
    return View();
}

[HttpPost]
public ActionResult Inserir(ProjetoViewModel model)
{
    if (!ModelState.IsValid)
    {
        return View(model);
    }

    Projeto projeto = new Projeto
    {
        Id_projeto = model.Id_projeto,
        Nome_projeto = model.Nome_projeto,
        Gerencia = model.Gerencia,
        Coordenacao = model.Coordenacao,
        Horas_orcadas = model.Horas_orcadas,
        Impacto = model.Impacto,
        Esforco = model.Esforco,
        Meta = model.Meta,
        Design_sprint = model.Design_sprint,
        Prioridade = model.Prioridade
    };

    _projetoNegocios.Salvar(projeto);

    return RedirectToAction("Index");
}

View:

public class ProjetoViewModel
{
    public int Id_projeto { get; set; }

    [Required(ErrorMessage = "* Campo obrigatório")]
    public string Nome_projeto { get; set; }

    [Required(ErrorMessage = "* Campo obrigatório")]
    public string Gerencia { get; set; }


    public string Coordenacao { get; set; }

    [Required(ErrorMessage = "* Campo obrigatório")]

    public DateTime Horas_orcadas { get; set; }

    [Required(ErrorMessage = "* Campo obrigatório")]

    public string Impacto { get; set; }

    public string Esforco { get; set; }

    [Required(ErrorMessage = "* Campo obrigatório")]

    public string Meta { get; set; }


    public string Design_sprint { get; set; }

    [Required(ErrorMessage = "* Campo obrigatório")]
    [DataType(DataType.Text)]
    [RegularExpression("^[0-9]*$", ErrorMessage = "Somente números")]
    public string Prioridade { get; set; }


    public ProjetoViewModel(Projeto projeto )
    {
        Id_projeto = projeto.Id_projeto;
        Nome_projeto = projeto.Nome_projeto;
        Gerencia = projeto.Gerencia;
        Coordenacao = projeto.Coordenacao;
        Horas_orcadas = projeto.Horas_orcadas;
        Impacto = projeto.Impacto;
        Esforco = projeto.Esforco;
        Meta = projeto.Meta;
        Design_sprint = projeto.Design_sprint;
        Prioridade = projeto.Prioridade;
    }
}
  • Also put your View that is doing the information Ubmit.

  • I put Victor :)

  • You can enter the post method to enter the data in the form or the error when you open the screen?

  • Error occurs when compiling or at runtime?

  • I believe that to instantiate an object already filling would be. Projeto projeto = new Projeto(){// preenche o objeto aqui }

  • The error occurred at runtime. I was able to fix by placing only an empty constructor: public Projetoviewmodel( ) {}

  • That’s exactly what I put in the answer :-) You need to mark it as an answer so your question doesn’t stay open (as if you have no solution).

Show 2 more comments

1 answer

1

Add a new default constructor to your Model class (Projectoviewmodel):

public class ProjetoViewModel
{
    // Novo construtor
    public ProjetoViewModel()
    {

    }

    public int Id_projeto { get; set; }

    [Required(ErrorMessage = "* Campo obrigatório")]
    public string Nome_projeto { get; set; }

    [Required(ErrorMessage = "* Campo obrigatório")]
    public string Gerencia { get; set; }


    public string Coordenacao { get; set; }

    [Required(ErrorMessage = "* Campo obrigatório")]

    public DateTime Horas_orcadas { get; set; }

    [Required(ErrorMessage = "* Campo obrigatório")]

    public string Impacto { get; set; }

    public string Esforco { get; set; }

    [Required(ErrorMessage = "* Campo obrigatório")]

    public string Meta { get; set; }


    public string Design_sprint { get; set; }

    [Required(ErrorMessage = "* Campo obrigatório")]
    [DataType(DataType.Text)]
    [RegularExpression("^[0-9]*$", ErrorMessage = "Somente números")]
    public string Prioridade { get; set; }


    public ProjetoViewModel(Projeto projeto )
    {
        Id_projeto = projeto.Id_projeto;
        Nome_projeto = projeto.Nome_projeto;
        Gerencia = projeto.Gerencia;
        Coordenacao = projeto.Coordenacao;
        Horas_orcadas = projeto.Horas_orcadas;
        Impacto = projeto.Impacto;
        Esforco = projeto.Esforco;
        Meta = projeto.Meta;
        Design_sprint = projeto.Design_sprint;
        Prioridade = projeto.Prioridade;
    }
}

Explaining: When the Defaultmodelbinder need to instantiate the object (Projectoviewmodel) it uses internally the method Activator.Createinstance(), this method trusts that the object has a constructor without parameters.

Like your class Model (Projectoviewmodel) does not have a default constructor without parameters error occurs.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.