2016-03-16 3 views
0

В очень базовом проекте по умолчанию я пытаюсь добавить представление редактирования для applicationuser в контроллере управления. Вот мои методы контроллера:Почему мой id null в asp.net mvc

// 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 правильно (только добавил несколько полей). Однако, когда я отправляю форму, я получаю плохой запрос с очень небольшими подробностями, но я предполагаю, что мой идентификатор равен null, и он набрасывает нулевую проверку. У меня почти идентичный код, работающий в другом проекте, и я не могу в жизни меня найти какую-либо разницу.

Я думаю, что это достаточно информации, но я действительно не понимаю, что здесь происходит.

+4

', но я предполагаю, что мой идентификатор нулевой' - шаг 1. использовать отладчик + подтвердить ваше предположение. – Jamiec

+0

Итак, вы хотите, чтобы 'id' имел значение, так что вы уверены, что передаете параметр' id' в строке запроса? Нам нужно будет увидеть код вызова/html – musefan

+1

в вашем представлении для вашей страницы редактирования .. что произойдет, если вы поместите '@ Html.HiddenFor (model.ID)'? –

ответ

0

в вашем режиме редактирования, используйте

@Html.HiddenFor(model.ID) 

это не может быть спасения, потому что вы инициализируете все остальное, что вы связывание для идентификатора исключения.

попробовать

user.Id = formuser.Id;