以下のコードを参照してください。EFデータベースの最初のアプローチを使用し、DI用にNinjectを実装してドロップダウンを作成しようとしています。私はこれらの概念に不慣れで、何が間違っているのかわかりません。どんな助けでも大歓迎です-ありがとう。
以下は私のエラーです:
タイプ 'System.Collections.Generic.List' を 'System.Collections.Generic.IEnumerable' に暗黙的に変換することはできません。
以下は私のコントローラーです
public class CitiesController: Controller
{
private readonly ICitiesRepository repository;
public CitiesController(ICitiesRepository repository)
{
this.repository = repository;
}
public ActionResult Index()
{
var model = new Models.MyViewModel();
model.Cities = this
.repository
.GetAll()
.ToList()
.Select(x => new SelectListItem
{
Value = x.Id.ToString(),
Text = x.Name
});
return View(model);
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
return Content("Thanks for selecting city: " + model.SelectedCityId);
}
}
Models フォルダーの下に、以下の 3 つのクラス (CityDTO、MyViewModel、MyModel) があります。
CityDTO.cs
public class CityDTO
{
public string CityId { get; set; }
public string CityName { get; set; }
}
MyViewModel.cs
public class MyViewModel
{
public string SelectedCityId { get; set; }
public IEnumerable<SelectListItem> Cities { get; set; }
}
MyModel.cs
public interface ICitiesRepository
{
IEnumerable<City> GetAll();
}
public class CitiesRepositoryEF: ICitiesRepository
{
public IEnumerable<City> GetAll()
{
using (var ctx = new LocationEntities())
{
return ctx.usp_GetAllCities().ToList();
}
}
}
GlobalAsax.cs
protected void Application_Start()
{
App_Start.NinjectWebCommon.Start();
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
App_Start/NinjectWebCommon.cs
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<Models.ICitiesRepository>().To<Models.CitiesRepositoryEF>();
}
そして以下は私の見解です:
@model TestApp.Models.MyViewModel
@using (Html.BeginForm())
{
@Html.DropDownListFor(x=>x.SelectedCityID, Model.Cities, "Select City")
<button type = "submit">OK</button>
}