传递到字典中的模型项的类型为'System.Collections.Generic.List`1 [X]',但此字典需要类型为'X'的模型项

时间:2013-07-21 02:10:13

标签: asp.net-mvc-4

* CORRECTION

调用我的视图从用户表填充列表时会出现问题。

传入字典的模型项的类型为'System.Collections.Generic.List`1 [Mike.Models.User]',但此字典需要类型为'Mike.Models.User的模型项”。

这是我的控制器动作:

    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);
    }

有人可以帮助我....互联网上有类似问题的回复,但我相信我的独特......我已经搜索了几周无济于事。

提前致谢,

Renior

这是我简单的控制器动作......

   public ActionResult Index()
    {

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

    }

和我的剃刀语法。

@model IEnumerable

我试图填充用户表列表的视图..

2 个答案:

答案 0 :(得分:2)

以面值来衡量 - 你的并不是唯一的。您的问题是您将一组用户传递给期望用户的控制器操作。

您需要发布您的HTML,但它可能类似于@model List用户或其他东西,而不是单个用户。

如果您的模型代表单个用户,则将其传递给控制器​​。如果相反,请做相反的事,

如果要将列表传递给控制器​​使用列表用户

修改

制作你的剃刀语法

   @model Mike.Models.User

答案 1 :(得分:2)

在您的模型声明顶部的“注册”视图中,而不是:

@model List<Mike.Models.User>

你需要:

@model Mike.Models.User

您可能使用强类型脚手架功能来生成视图,但是您选择了一个列表选项而不是详细信息...