我正在使用asp.net MVC内核,并且我将从kendo下拉列表中的SQL中读取数据。 我也安装了Newtonsoft.Json库。我看到了下拉列表,但无法在下拉列表中加载数据。我的代码如下:
我的模型位于模型> Airports.cs中:
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace plan_1.Models
{
public class Airport: BaseEntity
{
public int Id { get; set; }
public string Iata { get; set; }
public string Icao { get; set; }
public string LogoUrl { get; set; }
public int IsBased { get; set; }
public int CityId { get; set; }
public virtual City City { get; set; }
public Airport()
{
this.Terminals = new
HashSet<Terminal>();
}
public ICollection<Terminal> Terminals
{ get; set; }
}
}
我的控制器位于Controllers> planController.cs中:
using System.Linq;
using Microsoft.AspNetCore.Mvc;
using plan_1.Models;
using Newtonsoft.Json;
namespace plan_1.Controllers
{
public class planController : Controller
{
public ActionResult Index()
{
return View();
}
public JsonResult GetAirPort()
{
plan_1Context dbContext = new
plan_1Context();
return
Json(dbContext.AirPorts.Select(O =>
new { _Id = O.Id, Origin = O.Iata
}),
JsonRequestBehavior.AllowGet);
}
}
}
我的视图位于views> plan> index.cshtml中,如下所示:
@model IEnumerable<plan_1.Models.Airport>
@{
ViewData["Title"] = "Planing";
}
<div>
<h4>Origin:</h4>
@(Html.Kendo().DropDownList()
.Name("Origin")
.HtmlAttributes(new { style
= "width:100%" })
.OptionLabel("Select
category...")
.DataTextField("Iata")
.DataValueField("Id")
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GetAirPorts",
"planController");
});
})
)
</div>
also, I should mix the airplane model by
the plan model, I think I should use the
view model to mix them.
Please help what should I do? It is days
that I am looking for the answer
答案 0 :(得分:0)
.DataTextField("Iata")
.DataValueField("Id")
是您在下拉列表中定义的ID和值,但是您正在从控制器传回_Id
和Origin
。我建议更改其中任何一个以匹配,以便它可以绑定到模型。我还建议您在下拉列表中添加.AutoBind(true)
。