嵌套在模型中的集合未受MVC 3约束(始终为null)

时间:2012-12-06 17:57:38

标签: c# asp.net-mvc-3 entity-framework

我有一个模型,它代表ASP.NET MVC 3和Entity Framework 5.0中有关大学的各种信息。该模型具有另一个模型的ICollection,称为TrendModel。无论我做什么,这个集合似乎永远不会被MVC存储/绑定。

当我在运行时手动设置此集合(在从数据库中检索之后)时,该集合当然不再为null,但无论我将其设置为然后存储在数据库中,趋势是当我从数据库中检索它时,它总是为空。

UniversityModel:

public class UniversityModel
{
    [Key]
    public string univ_id { get; set; }

    public string ipeds_id { get; set; }
    public string name { get; set; }
    public bool religious { get; set; }

    #region Location Information

    public string city { get; set; }
    public string state { get; set; }
    public string urbanization { get; set; }
    public double latitude { get; set; }
    public double longitude { get; set; }

    #endregion

    public ICollection<TrendModel> trends { get; set; }
}

TrendModel:

public class TrendModel
{
    [Key]
    public string id { get; set; }
    public ushort year { get; set; }
    public uint? capacity { get; set; }
    public uint? rate { get; set; }
    public uint? meals { get; set; }
    public bool? forProfit { get; set; }
    public bool? control { get; set; }
    public string degree { get; set; }
    public bool? landgrant { get; set; }
    public bool? athletic { get; set; }
    public string calendar { get; set; }
    public bool? required { get; set; }
}

不确定它是否相关,但是如果我为UniversityModel设置了一个将趋势设置为空列表的构造函数,那么趋势不再为空并且是一个空列表。

这是一个模型绑定问题,还是一个帖子问题或什么?对不起,如果我完全偏离基础,我对MVC和ASP.NET很新。

2 个答案:

答案 0 :(得分:0)

您尚未在趋势模型中添加外键。在univ_id课程中添加TrendModel

public class TrendModel
{
    [Key]
    public string id { get; set; }
    .
    .
    .
    [ForeignKey("univ_id")]
    public string univ_id   {get;set;}
}

答案 1 :(得分:0)

事实证明,我只是通过对趋势执行延迟加载来解决问题,因此该属性现在显示为:

public virtual ICollection<TrendModel> trends { get; set; }