2012-10-10 39 views
2

我在MVC4 + EXT.NET庫項目中創建StoreResult控制器以響應GridPanel()中的JsonReader()。我的控制器返回字符串Ext.Net.MVC.StoreResult,而不是json數據。我在VS2012,IIS8,MVC4中創建項目。c#mvc4 Ext.Net.MVC.StoreResult不返回有效結果

謝謝你的幫助。

// IN VIEW 

@(Html.X().GridPanel() 
.ID("GridPanel1") 
.Title("Array Grid") 
.Width(600) 
.Height(350) 
.Store(s => s.Add(Html.X().Store() 
    .PageSize(100) 
    .Buffered(true) 
    .AutoLoad(false) 
    .Proxy(proxy=>proxy.Add(Html.X().AjaxProxy() 
     .Url("/Data/GetData") 
     .Reader(reader=>reader.Add(Html.X().JsonReader() 
      .Root("data"))) 
    )) 
    .Model(model => model.Add(Html.X().Model() 
    .Fields(field => 
    { 
     field.Add(Html.X().ModelField().Name("UserId")); 
     field.Add(Html.X().ModelField().Name("UserName")); 


    }) 
    )) 

)) 
.VerticalScroller(scroller => scroller.Add(Html.X().GridPagingScroller())) 
    .ColumnModel(columnModel => 
    { 
     columnModel.Columns.Add(Html.X().Column() 
      .Text("UserId") 
      .DataIndex("UserID") 
      .Flex(1) 
      .Width(70)); 
     columnModel.Columns.Add(Html.X().Column() 
      .Text("UserName") 
      .DataIndex("UserName") 
      .Flex(1)); 
     columnModel.Columns.Add(Html.X().Column() 
      .Text("UserPassword") 
      .DataIndex("UserPassword") 
      .Flex(1));   
    }) 
.View(view => view.Add(Html.X().GridView().TrackOver(false))) 
.Listeners(listeners => 
{ 
    listeners.AfterRender.Handler = "this.store.guaranteeRange(0,99);"; 
    listeners.AfterRender.Delay = 100; 
}) 
) 

///////// IN CONTROLLER 

    public class DataController : System.Web.Mvc.Controller 
    { 
     // 
     // GET: /Data/GetData/ 
     public Ext.Net.MVC.StoreResult GetData(int page = 1, int start = 0, int limit = 100) 
     { 

      StoreResult responce = new StoreResult(); 


      List<UserList> UserList = new List<UserList>(); 

      for (int i = start + 1; i <= start + limit; i++) 
      { 
       UserList user = new UserList() 
        { 
         UserId = i, 
         UserName = "UserName " + i 
        }; 
       UserList.Add(user); 
      } 

      responce.Data = UserList; 
      responce.Total = 50000; 
      return responce; 


     } 


    } 

回答

1

嘗試在你的web.config文件更改此

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
    <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" /> 
    <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.5.7" /> 
    <assemblyIdentity name="Ext.Net.Utilities" publicKeyToken="2c34ac34702a3c23" /> 
    <bindingRedirect oldVersion="0.0.0.0-2.0.0" newVersion="2.0.1" /> 
    </dependentAssembly> 
    <dependentAssembly> 
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> 
    </dependentAssembly> 
    <dependentAssembly> 
    <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
    </dependentAssembly> 
</assemblyBinding> 

這個

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
    <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
    </dependentAssembly> 
    <dependentAssembly> 
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" /> 
    <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.5.7" /> 
    </dependentAssembly> 
    <dependentAssembly> 
    <assemblyIdentity name="Ext.Net.Utilities" publicKeyToken="2c34ac34702a3c23" /> 
    <bindingRedirect oldVersion="0.0.0.0-2.0.0" newVersion="2.0.1" /> 
    </dependentAssembly> 
    <dependentAssembly> 
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> 
    </dependentAssembly> 
    <dependentAssembly> 
    <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
    </dependentAssembly> 
</assemblyBinding>