将ASP.NET Identity Id分配给外表

时间:2014-04-06 02:04:43

标签: c# asp.net-mvc-5 asp.net-identity

如此简单,遗憾的是,这个新的身份系统不得不向我施加压力。

我想要做的就是在我的管理员中创建一个分配给用户的客户端项目。有关于如何让用户创建自己的东西的大量文档。但我需要让管理员只在这次创建。

页面加载但后来发布我得到这个错误,根据我读过的内容,在这种情况下没有任何意义," 没有类型'的类型的ViewData项目。 IEnumerable的'有关键' userId'。"我显然没有使用ViewData,它清楚地说是" userId"在下拉列表中。

该模型应该验证!

MODEL

    public class ApplicationUser : IdentityUser
{
    public virtual ICollection<ClientProject> ClientProjects { get; set; }
}

public class ClientProject
{
    public int Id { get; set; }

    [Display(Name = "Project")]
    [Required(ErrorMessage = "A project name is required.")]
    public string Name { get; set; }

    // ForeignKey => dbo.IdentityUser
    [Display(Name = "Client")]
    [Required(ErrorMessage = "Please select a client account to associate with.")]
    public virtual ApplicationUser User { get; set; }

}

CONTROLLER

        // GET: /Admin/ClientProjects/Create
    public ActionResult Create()
    {
        ViewBag.ProjectStatusId = new SelectList(Db.ProjectStatuses, "Id", "Name");
        ViewBag.Users = new SelectList(UserManager.Users.ToList(),"Id", "UserName");
        return View();
    }

    // POST: /Admin/ClientProjects/Create
    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Create([Bind(Include="Id,Name,ProjectStatusId")] ClientProject clientproject, string userId)
    {
        var client = UserManager.FindById(userId);

        if (ModelState.IsValid)
        {
            clientproject.User = client;
            Db.ClientProjects.Add(clientproject);
            await Db.SaveChangesAsync();
            return RedirectToAction("Index");
        }

        ViewBag.ProjectStatusId = new SelectList(Db.ProjectStatuses, "Id", "Name", clientproject.ProjectStatusId);
        return View(clientproject);
    }

查看

@Html.DropDownList("userId", (IEnumerable<SelectListItem>)ViewBag.Users, "--Select Client Account--", new { @class = "form-control" })

1 个答案:

答案 0 :(得分:0)

ViewData是MVC's internal representation of your view model,它是一个键值字典,在尝试将传递给您分配给视图的模型的数据绑定到该词典时。因此,在您的情况下,由于您的userId视图模型具有Users属性并且这是预期的,因此不清楚Id的可能性是多少。

基本上,这个MVC错误意味着“我在你的模型中寻找属性[空白]但却找不到它,因此我无法完成任务。”