Ich versuche eine einfache Autovervollständigung mit LINQ zu Entities und Razor (neu auch C# sharp) zu codieren und ich habe Probleme beim Anzeigen von JSON-Daten aus meiner Sicht.C# mvc ajax Konvertiere Liste in JSON String
Mein Controller ist wie folgt:
public ActionResult AutoCompleteCity(string guess)
{
List<City> listData = null;
if (!string.IsNullOrEmpty(guess))
{
listData = db.AutoCompleteCity(guess);
}
return Json(new { Data = listData });
}
AJAX-Aufruf: D Jede Art und Weise, wenn ich Datensätze aus der Datenbank abrufen und versuchen zu:
function getCities(input) {
var serviceURL = $("#autocompleteURL").val();
var url =
$.ajax({
type: "POST",
url: serviceURL,
data: {
'guess': input
},
dataType: 'json',
success: function (response) {
if (response.Data != null) {
if ($("#targetUL") != undefined) {
$("#targetUL").remove();
}
Data = response.Data;
$.each(Data, function (i, value) {
$("#targetUL").append($("<li class='targetLI' onclick='javascript:agregarTexto(this)'>" + JSON.stringify(value) + "</li>"));
});
});
}
Ich könnte eine Klammer oder zwei fehlen übergeben JSON-Werte an die Ansicht der Ausgang ist:
{"Data":[{"Selected":false,"Text":null,"Value":null}]}
Ich nehme an, ich bin JSON listData nicht korrekt übergeben. Jede Eingabe wird sehr geschätzt werden, danke!
EDIT: Hier ist ein screencap der von listdata in meinem Controller zurückgegebenen Werte
Dies ist meine LINQ-Abfrage
public List<City> AutoCompleteCity(string guess)
{
using (var context = new Sports.SportsEntities())
{
var query = (from loc in context.city
join prov in context.state on loc.STATE_ID equals prov.STATE_ID
where loc.CITY_DESC.Contains(guess.ToUpper())
select new
{
city = loc.CITY_DESC,
state = prov.STATE_DESC,
});
IEnumerable<City> cityList= from ba in query.AsEnumerable()
select new City(ba.city, ba.state);
return cityList.ToList();
}
}
Sie brauchen nicht zu 'JSON.stringify()'. In jeder Schleife können Sie 'value.Value',' value.Selected' oder 'value.Text' verwenden. – Jasen
Wenn Sie in Ihrer MVC-Aktion einen Haltepunkt setzen, (a) wird der korrekte Wert von "rate" in die Aktion übernommen. (b) Was ist der Wert von listData in der return-Anweisung? –
@GlennFerrie Ich habe meinem ursprünglichen Beitrag einen Screenshot mit den Werten hinzugefügt, danke! –