C# ASP.NET MVC4,实体框架未在编辑操作中传递字段

C# ASP.NET MVC4,实体框架未在编辑操作中传递字段,c#,asp.net-mvc-4,visual-studio-2012,entity-framework-5,C#,Asp.net Mvc 4,Visual Studio 2012,Entity Framework 5,我正在开发一个小型ASP.NET MVC4 web应用程序,该应用程序使用实体框架将应用程序与我的数据库链接起来。我让VisualStudio2012在控制器和视图中生成所有CRUD操作,除了编辑之外,一切正常 我生成的对象如下所示: public partial class Post { public Post() { this.Attachment = new HashSet<Attachment>(); } [Display(A

我正在开发一个小型ASP.NET MVC4 web应用程序,该应用程序使用实体框架将应用程序与我的数据库链接起来。我让VisualStudio2012在控制器和视图中生成所有CRUD操作,除了编辑之外,一切正常

我生成的对象如下所示:

public partial class Post
{
    public Post()
    {
        this.Attachment = new HashSet<Attachment>();
    }

    [Display(AutoGenerateField = false)]
    public int post_id { get; set; } // This is the PK of my table
    public string title { get; set; }
    public string text { get; set; }
    [Display(AutoGenerateField = false)]
    public System.DateTime created { get; set; }
    [Display(AutoGenerateField = false)]
    public Nullable<System.DateTime> modified { get; set; }
    [Display(AutoGenerateField = false)]
    public string author { get; set; } // This is a FK from the "author" table

    public virtual ICollection<Attachment> Attachment { get; set; }
    public virtual Author Author1 { get; set; }
}
当我提交编辑后的文章时,ASP.NET抛出一个DbUpdateConcurrencyException,表示该操作影响了意外的行数(0)

调试时,我发现author、created和post_id为空;他们都应该保持自己的价值观

我怎样才能解决这个问题

提前感谢。

在编辑视图()中,您应该在隐藏字段中添加以下属性:

@Html.HiddenFor(m => m.post_id) etc.

这样他们就可以绑定到post模型上,您可以在编辑方法中使用它们。

您是从视图中发布的吗?如果将它们设置为错误的自动生成字段,则应将它们作为隐藏字段放在视图中,或通过代码将它们设置在控制器中。一旦我完成了您发布的内容并删除了显示批注,一切都顺利进行。非常感谢。
@Html.HiddenFor(m => m.post_id) etc.