Telerik MVC3网格 - 批量编辑问题

时间:2011-08-14 13:15:14

标签: asp.net-mvc-3 telerik-mvc

我使用Telerik MVC Grid并将其配置为批处理模式编辑http://demos.telerik.com/aspnet-mvc/grid/editingbatch。我正在尝试编辑我的一个实体“州”,其中包含城市列表,其中城市是另一个实体。以下是州实体的外观。

public class State {
    ...Some Scalar Properties
    public virtual List<City> Cities { get; set; }  //Navigation Property
    public State() {  
        Cities = new List<City>();
    }
}

我的城市实体指向国家,如下所示。

public class City {
     ... Some Scalar Properties
    public virtual State State { get; set; }  //Navigation property
}

我在我的一个cshtml页面中使用这个模型有点像这样

@(Html.Telerik().Grid<State>()
            .Name("tlkStateGrid")
            .Editable(e =>  e.Mode(GridEditMode.InCell).DisplayDeleteConfirmation(false))
            .ToolBar(t => {
                t.Insert().ButtonType(GridButtonType.Image);
                t.SubmitChanges().ButtonType(GridButtonType.Image);
            })

 ...Some More of code here.

在我的控制器中,我正在以正常方式处理批量更新。

public ActionResult _SaveChanges(IEnumerable<State> inserted, IEnumerable<State> updated, IEnumerable<State> deleted) {
.....
}

当我尝试使用Telerik Grid的批处理编辑来编辑状态实体时,上述控制器操作的(IEnumerable updated)参数具有已修改的所有状态的条目。然而,即使该州没有任何城市,各州也有一个城市名单,其中有一个城市(无效)。

所以关键是我没有在我的代码的任何部分创建任何City,但当我收到States作为上面列出的控制器操作的参数时,在City List中有一个null City。为什么会这样?

1 个答案:

答案 0 :(得分:0)

我不完全确定我理解这个问题。因此,当网格发布时,您将创建一个新的 State 。附加到 State 对象,有一个null City 对象。这是问题吗?或者我错过了什么?

如果这是问题,这是正常行为,应该是预期的。这就是MVC3中自动JSON反序列化的工作原理 - 无论何时创建父对象而不定义嵌套对象,嵌套对象都将返回null。只需处理代码中的空值即可。