Я выполняю LINQ-запросы к модели данных трафика в БД.
На html-странице есть раскрывающееся меню, из которого я получу значение selectedInjury для изменения результатов запроса (оно здесь смоделировано). Я не могу понять, как передать значение в контроллер.
Каждый вариант, который я пробовал, отвечает
Failed to load resource: the server responded with a status of 500 (Internal Server Error)
Это Javascript, который я пытаюсь заставить работать:
var mockSelectedInjury = "FATAL";
$.getJSON("/api/query1/selectedInjury", mockSelectedInjury)
.done(function (data) {
$.each(data, function (key, crash) {
$('<li>', { text: formatCrashReport(crash) }).appendTo($('#crashTable'));
});
});
Это метод, который я написал в контроллере:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using final.Models;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace final.Controllers
{
public class CrashController : ApiController
{
ChicagoTrafficEntities myEntities = new ChicagoTrafficEntities();
[Route("api/query1")]
[HttpGet]
public IHttpActionResult GetQuery(string selectedInjury)
{
List<CrashReport> returnList = new List<CrashReport>();
//get a selection of all the data where injury matches
var records = from report in myEntities.CrashReports
where report.MostSevereInjury == selectedInjury
select new
{
PrimeContributingCause = report.PrimeContributingCause,
};
// add the query items to a list
foreach (var item in records)
{
CrashReport temp = new CrashReport
{
PrimeContributingCause = item.PrimeContributingCause
};
returnList.Add(temp);
}
// create a new query from that set that includes a count of the
// occurrences of the injury per the primeCause.
var foo = returnList.GroupBy(n => n.PrimeContributingCause).
Select(group =>
new
{
PrimeContributingCause = group.Key,
NumberInjuries = group.Count()
}).OrderByDescending(n => n.NumberInjuries);
return ResponseMessage(Request.CreateResponse(HttpStatusCode.OK, Json(foo)));
}
}
}