2014-05-16 29 views
0

我无法获得局部视图的工作。局部视图中嵌入了一个网格面板以及其他一些文本框。我有一个具有一些字符串属性的自定义模型类来填充文本框和自定义对象的列表以填充网格。我正在使用.DataSource(Model.MyList)来填充网格面板,但我一直得到一个空引用异常 - 对象没有设置为对象的实例。如果我删除了数据源行,它会正确呈现(显然,网格中没有任何数据) - 其他字段已正确填充。使用复杂模型类型的数据源的ext.net mvc网格面板

下面是一些示例代码 -

@(x.FormPanel() 
    .ID("MyDetailsPanel") 
    .Title("My Details") 
     .Frame(true) 
     .Height(525) 
     .Width(425) 
     .Margin(5)   
     .Items(
      x.TextFieldFor(m => m.Title) 
       .FieldLabel("Title") 
       .AnchorHorizontal("100%"), 
      x.TextField() 
       .FieldLabel("Number") 
       .AnchorHorizontal("100%"), 
      x.ComboBox() 
       .FieldLabel("Type") 
       .AnchorHorizontal("100%"), 


       x.GridPanel() 
        .Title("My Grid") 
        .Frame(true) 
        .Width(400) 
        .Height(350) 
        .Store(
         x.Store() 
          .AutoLoad(true) 
          .ID("MyStore") 
          .DataSource(Model.MyList) 
          .Model(
           x.Model() 
            .Fields(
             x.ModelField().Name("Number").Type(ModelFieldType.String), 
             x.ModelField().Name("Title").Type(ModelFieldType.String) 
            ) 
...... 

这里是模型 -

public class MyDetailsViewModel 
    { 
     public int Id { get; set; } 
     public string Title { get; set; } 

     public List<SomeDto> MyList { get; set; } 
    } 

,这里是控制器 -

public ActionResult MyDetailsPartial(string id) 
     { 
      var vm = new MyDetailsViewModel(); 
      vm.MyList = new List<SomeDto>(); 
      if(id != null) 
      { 
       vm.Title = "new title"; 
       vm.MyList.Add(new SomeDto { Number = "234", Title = "abcd"}); 
      }    

      ViewData.Model = vm; 

      var pvr = new Ext.Net.MVC.PartialViewResult 
      { 
       ViewData = this.ViewData 

      }; 
      return pvr;   
     } 

我不明白为什么我不能将模型中的自定义列表传递给网格面板的数据源。

任何想法都会很棒。

回答

1

我能够通过使用GridPanelFor得到这个工作。通过使用这个,视图呈现并按预期更新。

谢谢