MVC 3 IList <t>模型属性在POST上为NULL </t>

时间:2011-12-15 16:40:41

标签: asp.net-mvc-3 entity-framework-4.1 ef-code-first viewmodel ilist

我会让代码在这里说话,我有这样的事情:

class Problem
{
    public string Title { get; set; }
    public string Description { get; set; }
    public virtual IList<Symptom> Symptoms { get; set; }
}

class Symptom
{
    public string Comments { get; set; }
    public virtual Category Category { get; set; }
}

class Category
{
    public string Name { get; set; }
}

我有一个模式,允许用户在我的视图上添加症状列表。添加的每个症状都会产生一个看起来像这样的INPUT(其中N是索引):

<input type="text" name="Symptom[N].Name" value="@Model.Symptom[N].Name">
<input type="text" name="Symptom[N].Category" value="@Model.Symptom[N].Category">

将数据发布到控制器后,模型包含症状的有效列表(如果我添加3,我的Product.Symptom列表有3个实体)和每个症状的[注释]已持久化,但每个的[Category]属性为NULL。我在这做错了什么?我已经尝试了很多东西,但我仍然以NULL作为每个的[类别]。

我正在使用Entity Framework 4.1 Code First和使用Razor语法在MVC 3中开发的Fluent API。

1 个答案:

答案 0 :(得分:2)

试试这个:

<input type="text"
    name="Symptom[N].Category.Name"
    value="@Model.Symptom[N].Category.Name">

我认为正在发生的是它正试图将string绑定到无效的Category。如果要将文本映射到Name类的Category属性,则需要将其指定为更深层次。