Я создал службу Web API, которая выводит JSON, который должен использоваться сетью данных KendoUI.Суть в том, что таблица данных KendoUI ОЧЕНЬ требовательна к JSON-коду, который она использует;у него не должно быть никаких возвратов каретки / перевода строки.Это должен быть один большой блок неформатированного JSON.
Мы работали с кем-то из Telerik, и они настроили какой-то прокси (https://cors.io/?http://js01.consultwithus.us/odata/vw_FilesToBeProcessed_Dashboard),, но это всего лишь пластырь.
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
// enable CORS
config.EnableCors();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// we must set odata to version 2
var vers = new Version(2, 0);
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.DataServiceVersion = vers;
builder.MaxDataServiceVersion = vers;
builder.EntitySet<vw_FilesToBeProcessed_Dashboard>("vw_FilesToBeProcessed_Dashboard");
config.Routes.MapODataServiceRoute("odata", "odata", builder.GetEdmModel());
}
}
Я хочу, чтобы мой вывод выглядел как это , но сейчас он выглядит просто как это .
ОБНОВЛЕНИЕ 12/28/2018
Вот код для моего контроллера:
[EnableCors(origins: "http://js01.consultwithus.us", headers: "*", methods: "*")]
public class vw_FilesToBeProcessed_DashboardController : ODataController
{
private CSS_DevEntities db = new CSS_DevEntities();
// GET: odata/vw_FilesToBeProcessed_Dashboard
[EnableQuery]
public IQueryable<vw_FilesToBeProcessed_Dashboard> Getvw_FilesToBeProcessed_Dashboard()
{
return db.vw_FilesToBeProcessed_Dashboard;
}
// GET: odata/vw_FilesToBeProcessed_Dashboard(5)
[EnableQuery]
public SingleResult<vw_FilesToBeProcessed_Dashboard> Getvw_FilesToBeProcessed_Dashboard([FromODataUri] int key)
{
return SingleResult.Create(db.vw_FilesToBeProcessed_Dashboard.Where(vw_FilesToBeProcessed_Dashboard => vw_FilesToBeProcessed_Dashboard.Files_PK == key));
}
// PUT: odata/vw_FilesToBeProcessed_Dashboard(5)
public IHttpActionResult Put([FromODataUri] int key, Delta<vw_FilesToBeProcessed_Dashboard> patch)
{
Validate(patch.GetEntity());
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
vw_FilesToBeProcessed_Dashboard vw_FilesToBeProcessed_Dashboard = db.vw_FilesToBeProcessed_Dashboard.Find(key);
if (vw_FilesToBeProcessed_Dashboard == null)
{
return NotFound();
}
patch.Put(vw_FilesToBeProcessed_Dashboard);
try
{
db.SaveChanges();
}
catch (DbUpdateConcurrencyException)
{
if (!vw_FilesToBeProcessed_DashboardExists(key))
{
return NotFound();
}
else
{
throw;
}
}
return Updated(vw_FilesToBeProcessed_Dashboard);
}
// POST: odata/vw_FilesToBeProcessed_Dashboard
public IHttpActionResult Post(vw_FilesToBeProcessed_Dashboard vw_FilesToBeProcessed_Dashboard)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.vw_FilesToBeProcessed_Dashboard.Add(vw_FilesToBeProcessed_Dashboard);
try
{
db.SaveChanges();
}
catch (DbUpdateException)
{
if (vw_FilesToBeProcessed_DashboardExists(vw_FilesToBeProcessed_Dashboard.Files_PK))
{
return Conflict();
}
else
{
throw;
}
}
return Created(vw_FilesToBeProcessed_Dashboard);
}
// PATCH: odata/vw_FilesToBeProcessed_Dashboard(5)
[AcceptVerbs("PATCH", "MERGE")]
public IHttpActionResult Patch([FromODataUri] int key, Delta<vw_FilesToBeProcessed_Dashboard> patch)
{
Validate(patch.GetEntity());
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
vw_FilesToBeProcessed_Dashboard vw_FilesToBeProcessed_Dashboard = db.vw_FilesToBeProcessed_Dashboard.Find(key);
if (vw_FilesToBeProcessed_Dashboard == null)
{
return NotFound();
}
patch.Patch(vw_FilesToBeProcessed_Dashboard);
try
{
db.SaveChanges();
}
catch (DbUpdateConcurrencyException)
{
if (!vw_FilesToBeProcessed_DashboardExists(key))
{
return NotFound();
}
else
{
throw;
}
}
return Updated(vw_FilesToBeProcessed_Dashboard);
}
// DELETE: odata/vw_FilesToBeProcessed_Dashboard(5)
public IHttpActionResult Delete([FromODataUri] int key)
{
vw_FilesToBeProcessed_Dashboard vw_FilesToBeProcessed_Dashboard = db.vw_FilesToBeProcessed_Dashboard.Find(key);
if (vw_FilesToBeProcessed_Dashboard == null)
{
return NotFound();
}
db.vw_FilesToBeProcessed_Dashboard.Remove(vw_FilesToBeProcessed_Dashboard);
db.SaveChanges();
return StatusCode(HttpStatusCode.NoContent);
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
private bool vw_FilesToBeProcessed_DashboardExists(int key)
{
return db.vw_FilesToBeProcessed_Dashboard.Count(e => e.Files_PK == key) > 0;
}
}
У меня была платформа Visual Studio для меня, основанная на моем EDM.