digiShadoe
digiShadoe

Reputation: 117

The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[X]', but this dictionary requires a model item of type 'X'

*CORRECTION

The problem occurs when my view is called to populate a list from my user table.

The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[Mike.Models.User]', but this dictionary requires a model item of type 'Mike.Models.User'.

Here is my controller action:

    public ActionResult Registration(Mike.Models.User user)
    {
        if (ModelState.IsValid)
        {
            using (var db = new UserContext())
            {

                var crypto = new SimpleCrypto.PBKDF2();
                var encrypPass = crypto.Compute(user.password);
                var sysUser = db.Users.Create();

                sysUser.LastName = user.LastName;
                sysUser.FirstName = user.FirstName;
                sysUser.Email = user.Email;
                sysUser.password = encrypPass;
                sysUser.passwordSalt = crypto.Salt;
                sysUser.UserID = user.UserID;
                db.Users.Add(sysUser);
                db.SaveChanges();

                return RedirectToAction("Index", "Home");
            }


        }

        return View(user);
    }

Can someone please help me.... There are responses to similar questions on the internet but I believe mine is unique.. I have searched for weeks to no avail.

Thanks in advance,

Renior

Here is my simple controller action...

   public ActionResult Index()
    {

        return View(db.Users.ToList());

    }

and my razor syntax.

@model IEnumerable

Im trying to populate a view of my user table list..

Upvotes: 1

Views: 7530

Answers (2)

PW Kad
PW Kad

Reputation: 14995

Take this at face value - yours is not unique. Your problem is you are passing an array of user to a controller action that expects a user.

You need to post your HTML but it is probably something like @model List user or something instead of a single user.

If your model represents a single user then pass that to the controller. If opposite, do opposite,

If you want to pass a list to the controller use list users

edit

make your razor syntax

   @model Mike.Models.User

Upvotes: 2

Marko
Marko

Reputation: 13273

In your Registration view at the top where your model declaration is, instead of this:

@model List<Mike.Models.User>

you need to have:

@model Mike.Models.User

You probably used strongly typed scaffolding feature to generate your view but instead of details option you chose a list option...

Upvotes: 2

Related Questions