ビューのドロップダウンリストに表示されるデータベースからリストをクエリしようとしています。選択した結果は投稿されます。
問題は、ビューで 2 つのモデルを使用していることです。さらに多くのオプションを試しました。
私はこれで迷っています、投稿する方法がわかりません。データは問題なくリストボックスに表示されます。投稿しようとすると、次のエラーが表示されます。
「キー 'Item2.idcity' を持つタイプ 'IEnumerable' の ViewData アイテムはありません。」System.Exception {System.InvalidOperationException}
都市モデル
public class CityModel
{
public int idcity { get; set; }
[Required]
public string cityName { get; set; }
public IEnumerable<CityModel> citys { get; set; }
}
病院モデル
public class HospitalShowModels
{
[Required]
public string hospitalName { get; set; }
[Required]
public string cityName { get; set; }
}
HospitalController.Create()
public ActionResult Create()
{
ViewBag.cityModel = new SelectList(DataAccess.DAL.showCity(), "idcity", "cityName");
var tuple = new Tuple<DataAccess.HospitalShowModels, DataAccess.CityModel>(new DataAccess.HospitalShowModels(), new DataAccess.CityModel());
return View(tuple);
}
[HttpPost]
public ActionResult Create(DataAccess.HospitalShowModels model, DataAccess.CityModel model1)
{
if (ModelState.IsValid) {
DataAccess.DAL.insertHospital(model.hospitalName, model1.cityName);
}else{
ModelState.AddModelError("","Invalid options");
}
return View();
}
View.Create
@model Tuple<ProjektZaja.DataAccess.HospitalShowModels,ProjektZaja.DataAccess.CityModel>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Create Hospital</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Item1.hospitalName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Item1.hospitalName)
@Html.ValidationMessageFor(model => model.Item1.hospitalName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Item1.cityName)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => Model.Item2.idcity,(IEnumerable<SelectListItem>)ViewBag.cityModel)
@Html.ValidationMessageFor(model1 => Model.Item2.idcity)