Asp.net mvc 实体框架-无法将标识密钥发送到控制器进行更新

Asp.net mvc 实体框架-无法将标识密钥发送到控制器进行更新,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我正在成功地将一个实体保存到我的数据库中,并获取数据库生成的PK ID repository.InsertOrUpdate(viewModel.Entity); repository.Save(); viewModel.Entity.ID // This property will now have the ID that the database has generated. 所以一切都很好 但是,当我将Veiwmodel从控制器发送回视图时 return View(viewMode

我正在成功地将一个实体保存到我的数据库中,并获取数据库生成的PK ID

repository.InsertOrUpdate(viewModel.Entity);

repository.Save();

viewModel.Entity.ID  // This property will now have the ID  that the database has generated.
所以一切都很好

但是,当我将Veiwmodel从控制器发送回视图时

return View(viewModel);
和使用

@Html.TextBoxFor(m => m.Entity.Id)
ID显示为0。因此,当我尝试发布更新时,EF认为这是一条新记录,使用以下语法

public void InsertOrUpdate(Entity entity)
{
        if (entity.Id == default(int))
        {
            entity.Created = DateTime.Now;
            entity.LastEdit = DateTime.Now;

            Context.T.Add(entity);
        }
        else
        {
            entity.LastEdit = DateTime.Now;
            Context.Entry(entity).State = System.Data.Entity.EntityState.Modified;
        }
  } 
是否有任何明显的错误,我无法将创建的ID获取到视图

******编辑******

奇怪的是,使用

@Html.TextBoxFor(m => m.Entity.Id) 
将显示0,如上所述。然而,如果我使用

@Html.DisplayFor(m => m.Entity.Id)
它将显示正确的ID值。。(为什么?)

但当我按下send时,ActionResult post仍然返回0


感谢

您仍然可以通过viewData或TempData发送实体通过viewmodel发送实体信息,因为实体中的所有其他属性都在视图上正确呈现,只是ID永远不会正确。您确定插入后获得了ID吗?是的,我在返回视图(viewModel)上使用了一个断点,ID确实具有正确的ID。将检查链接,谢谢,等等,我刚刚注意到您正在调用
m.Entity.ID
我想它是
m.ID