Asp.net mvc 未保存实体字段

Asp.net mvc 未保存实体字段,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我正在使用Visual Studio 2013、MVC 5.1、EF 6.0和.NET 4.5。首先使用默认连接字符串编写代码 我有一个非常简单的实体,名为SchoolModel,如下所示 public class SchoolModel { [HiddenInput(DisplayValue = false)] [Key] public int Id { get; private set; } [Display(Name="School Name")]

我正在使用Visual Studio 2013、MVC 5.1、EF 6.0和.NET 4.5。首先使用默认连接字符串编写代码

我有一个非常简单的实体,名为
SchoolModel
,如下所示

public class SchoolModel
{
    [HiddenInput(DisplayValue = false)]
    [Key]
    public int Id { get; private set; }

    [Display(Name="School Name")]
    [DataType(DataType.Text)]
    public string Name { get; private set; }
}
我使用scaffolding特性创建了标准的MVC5视图/控制器组合,分别命名为School和SchoolController。我正在尝试向数据库中添加一些学校记录

创建视图:

@model OddsOnEnglish.GamingIELTS.Web.Models.SchoolModel

[snip]

@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>SchoolModel</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.Name, new {@class="col-md-2"})
            <div class="col-md-offset-2 col-md-10">
                @Html.EditorFor(model => model.Name)
            </div>
        </div>
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}
上面的
db
SchoolContext
的一个实例:

public class SchoolContext : DbContext
{
    public SchoolContext() : base("name=DefaultConnection")
    {
    }

    public DbSet<Models.SchoolModel> Schools { get; set; }
}
公共班级学校上下文:DbContext
{
public SchoolContext():base(“name=DefaultConnection”)
{
}
公立DbSet学校{get;set;}
}

所有这些都非常简单,基于各种教程。我的问题是,当我提交createschool表单时,索引页面再次显示,其中包含新学校的新行,但没有显示名称。查看数据库时,行确实会添加到相应的表中,但Id列中只有一个值—名称没有任何值。如果我在数据库中手动输入一个名称,该名称将显示在web界面中。显然,正在创建记录,但未填充名称字段。

只需将您的模型更正为:

public class SchoolModel
{
[HiddenInput(DisplayValue = false)]
[Key]
public int Id { get; set; }

[Display(Name="School Name")]
[DataType(DataType.Text)]
public string Name { get; set; }
}

您面临的这个问题是因为私有集阻塞。请更正它。

不要使用私有集..并尝试…@Exception谢谢您捕捉到这个问题。这么简单的事!想发布答案吗?发布了答案…@Grant-Palin。我忽略了这么明显的问题。显然需要另一只眼睛来捕捉它。模型已经修复,吸取了教训。太好了…总是从错误中吸取教训…谢谢…@GrantPalin
public class SchoolModel
{
[HiddenInput(DisplayValue = false)]
[Key]
public int Id { get; set; }

[Display(Name="School Name")]
[DataType(DataType.Text)]
public string Name { get; set; }
}