2017-07-27 3 views
2

Hier ist meine Aktion MethodeNicht in der Lage Daten mit Kendo ui Gitter zu binden

public ActionResult Kendo([DataSourceRequest]DataSourceRequest request) 
    { 
     var emp = EmployeeManager.GetAllEmployees(); 

     DataSourceResult result = emp.ToDataSourceResult(request); 
     return Json(result); 
    } 


Das ist mein Netzcode, die ich von der offiziellen Webseite

@model IEnumerable<MyProject.Web.Models.EmployeeViewModels.EmployeeViewModel> 

@using genommen haben Kendo.Mvc.UI;

@(Html.Kendo().Grid<TalentPro.Employees.Employee>() 
     .Name("grid") 
     .DataSource(dataSource => dataSource //Configure the Grid data source. 
      .Ajax() //Specify that Ajax binding is used. 
      .Read(read => read.Action("Kendo", "Home") 
     ) //Set the action method which will return the data in JSON format. 

     ) 
     .Columns(columns => 
     { 
      //Create a column bound to the ProductID property. 
      columns.Bound(product => product.Id); 
      //Create a column bound to the ProductName property. 
      columns.Bound(product => product.FirstName); 
      //Create a column bound to the UnitsInStock property. 
      columns.Bound(product => product.LastName); 
      columns.Bound(product => product.EmailId); 
      columns.Bound(product => product.PhoneNumber); 
     }) 
     .Pageable() // Enable paging 
     .Sortable() // Enable sorting 

)

Ich habe durch offizielle Dokumentation gegangen, es half mir Kendo ui mit meinem Asp.net Kern Projekt zu integrieren. Aber ich habe keine Ahnung, wo ich falsch gelaufen bin, es bindet die Daten nicht an das Raster.

Ich habe mehrere Möglichkeiten versucht, aber keine Verwendung. Kann mir jemand helfen, dieses Problem zu lösen?
Vielen Dank im Voraus.

Antwort

2

Schließlich Got Lösung Dies sind die Änderungen i

  1. geänderte Action zu JsonResult
  2. Eine weitere unter der Linie in startup.cs hinzugefügt gemacht
    “.AddJsonOptions (Optionen => options.SerializerSettings.ContractResolver = new DefaultContractResolver());
    Vielen Dank für coby
1

In Ihrer Controller-Methode ersetzen

return Json(result); 

mit

return Json(result, JsonRequestBehavior.AllowGet); 

MVC standardmäßig DenyGet aus Sicherheitsgründen, so dass Sie es manuell zu AllowGet setzen müssen, oder es wird nicht zurückkehren korrekt.

Es ist wichtig zu beachten, dass dies eine kleine Sicherheitslücke für Ihr zurückgegebenes JSON-Objekt darstellen kann, wenn der verwendete Browser eine ältere Version ist (behoben wurde ab). Dies sollte nur dann ein Problem darstellen, wenn Sie besonders sensible Informationen weitergeben UND Ihre Benutzer aus veralteten Browsern auf die Seite zugreifen können. Sie können mehr zum Thema HERE und HERE lesen.

+0

JsonRequestBehavior hat in Kern 1.0 Wie pro einen Vorschlag von einem abgeschrieben i Action zu JsonResult geändert. Aber keine Verwendung –

+0

Ich entschuldige mich, ich habe nicht die Version bemerkt, die Sie verwendeten. Sie können auch versuchen, den Rückgabetyp durch IActionResult zu ersetzen und Json (Ergebnis) durch Ok (Ergebnis) zu ersetzen. ActionResult-, JsonResult- und IActionResult-Rückgabetypen sollten bei Json return alle gleich funktionieren. Daher bin ich mir nicht mehr sicher, ob das Ihr Problem ist. –

+0

Haben Sie an der Controller-Methode einen Haltepunkt gesetzt, um zu sehen, dass er aufgerufen wird? Werden Fehler ausgelöst? –

Verwandte Themen