Error in controller ViewData

4

What could be wrong with this example?

I can not do this:

    var pessoa = new Pessoa
        (
           PessoaId = 1,
           Nome = "teste teste",
           twitter = "@teste"

        );

Error message:

  

'Name' does not exist in the current context 'Person' does not exist in the current context 'twitter' does not exist in the current context

I have the Models

namespace PostGetModel.Models
{
    public class Pessoa
    {
        public int PessoaId { get; set; }
        public string  Nome { get; set; }
        public string twitter { get; set; }

    }
}

No Controller

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using PostGetModel.Models;


namespace PostGetModel.Controllers
{
    public class HomeController : Controller
    {

        public ActionResult Index()
        {
            var pessoa = new Pessoa
                (
                   pessoa.PessoaId = 1,
                   pessoa.Nome = "teste teste",
                   pessoa.twitter = "@teste"

                );

            ViewData["PessoaId"] = pessoa.PessoaId;
            ViewData["Nome"] = pessoa.Nome;
            ViewData["twitter"] = pessoa.twitter;

            return View();
        }

    }
}
    
asked by anonymous 30.09.2014 / 16:48

3 answers

7

You can use an object initializer :

var pessoa = new Pessoa
        {
           PessoaId = 1,
           Nome = "teste teste",
           twitter = "@teste"
        };

Or create a builder for your class:

public class Pessoa {
    public Pessoa(int pessoaId, string nome, string twitter) {
        this.PessoaId = pessoaId;
        this.Nome = nome;
        this.twitter = twitter;
    }
    public int PessoaId { get; set; }
    public string  Nome { get; set; }
    public string twitter { get; set; }
}

With the constructor you can create the instance the way you were using it.

I could call it like this:

var pessoa = new Pessoa
    (
       pessoaId = 1,
       nome = "teste teste",
       twitter = "@teste"
    );

Or even so:

var pessoa = new Pessoa(1, "teste teste", "@teste");

A working example:

public class Program {
    public static void Main() {
        var joao = new Pessoa(1, "João da Silva", "@joao");
        var jose = new Pessoa(
           pessoaId : 1,
           nome : "José da Silva",
           twitter : "@jose"
        );
        var joaquim = new Pessoa() {
           PessoaId = 1,
           Nome = "Joaquim da Silva",
           Twitter = "@joaquim"
        };
    }
}

public class Pessoa {
    public Pessoa() {} //normalmente isto não é recomendado, fiz só para criar o terceiro exemplo
    public Pessoa(int pessoaId, string nome, string twitter) {
        PessoaId = pessoaId;
        Nome = nome;
        Twitter = twitter;
    }
    public int PessoaId { get; set; }
    public string  Nome { get; set; }
    public string Twitter { get; set; }
}

See running on .NET Fiddle . And at Coding Ground . Also I put it in GitHub for future reference .

    
30.09.2014 / 16:57
5

Initializing properties of an object is done with {}

var pessoa = new Pessoa
        {
           PessoaId = 1,
           Nome = "teste teste",
           twitter = "@teste"
        };
    
30.09.2014 / 16:51
0

You do not have any constructors defined for the person class, so you should use property initializers to initialize the properties of the object.

In your case, putting everything inside the parentheses, you were trying to make assignments to variables that do not exist, so you received this error message.

var pessoa = new Pessoa()
        {
           PessoaId = 1,
           Nome = "teste teste",
           twitter = "@teste"
        };
    
30.09.2014 / 16:54