为什么我的id在asp.net mvc中为null

时间:2016-03-16 15:37:46

标签: asp.net-mvc

在一个非常基本的默认项目中,我尝试在管理控制器中为applicationuser添加编辑视图。这是我的控制器方法:

    // GET: /Manage/Edit/1 
    public async Task<ActionResult> Edit()
    {

        var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());
        if (user == null)
        {
            return HttpNotFound();
        }
        return View(user);
    }

    // POST: /Manage/Edit/5 
    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Edit([Bind(Include = "Email,Id,FirstName,LastName,Phone,Company,Description,Website")] ApplicationUser formuser, string id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        var user = await UserManager.FindByIdAsync(id);
        user.Email = formuser.Email;
        user.FirstName = formuser.FirstName;
        user.LastName = formuser.LastName;
        user.Phone = formuser.Phone;
        user.Company = formuser.Company;
        user.Description = formuser.Description;
        user.Website = formuser.Website;

        if (ModelState.IsValid)
        {
            //Update the user details 
            await UserManager.UpdateAsync(user);
            return RedirectToAction("Edit");
        }
        else
        {
            return View();
        }
    }

我的观点是使用applicationuser模型,我相信我已正确扩展了applicationuser(只添加了几个字段)。但是,当我提交表单时,我得到一个很少详细的错误请求,但我认为我的id为null并且它正在进行空检查。我在另一个项目中使用了几乎相同的代码,但我不能发现任何不同之处。

我认为这是足够的信息,但我真的不明白这里发生了什么。

1 个答案:

答案 0 :(得分:0)

在编辑视图中

,使用

@Html.HiddenFor(model.ID)

它可能没有保存,因为您正在初始化除了id之外的所有其他绑定。

尝试

user.Id = formuser.Id;