Я установил привязку базовой модели, передав список в представление и выполнив:
Контроллер:
[Authorize]
public ActionResult AddTracks(int id)
{
TrackRepository trackRepository = new TrackRepository();
//ShowTrackAssociationHelper showTrack = new ShowTrackAssociationHelper();
//showTrack.tracks = trackRepository.GetAssociatedTracks(id).ToList();
//showTrack.show = showRepository.GetShow(id);
TracksViewModel tracksModel = new TracksViewModel();
tracksModel.Tracks = trackRepository.GetAssociatedTracks(id);
ViewBag.ShowID = id;
return View(tracksModel);
}
Вид:
@model BluesNetwork.Models.TracksViewModel
@Html.EditorFor(model => model.Tracks, "TrackEditor")
Модель TracksView:
public class TracksViewModel
{
public IEnumerable<Track> Tracks { get; set; }
}
TackEditor:
@model BluesNetwork.Models.Track
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.TrackID)
@Html.HiddenFor(model => model.ShowID)
<div class="editor-label">
@Html.LabelFor(x => x.Title)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Title)
@Html.ValidationMessageFor(model => model.Title)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.TrackNumber)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.TrackNumber, new { maxlength = 2 })
@Html.ValidationMessageFor(model => model.TrackNumber)
</div>
@Html.HiddenFor(model => model.HQFileID)
@Html.HiddenFor(model => model.LQFileID)
<div class="editor-label">
@Html.LabelFor(model => model.InternalRating)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.InternalRating)
@Html.ValidationMessageFor(model => model.InternalRating)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.License)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.License)
@Html.ValidationMessageFor(model => model.License)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.LicenseNumber)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.LicenseNumber)
@Html.ValidationMessageFor(model => model.LicenseNumber)
</div>
<input type="submit" value="Save" />
}
Сначала я получил:
Что дает мне вывод как таковой на каждом входе:
имя = "[0] .ShowID"
однако я хотел, чтобы это было:
имя = "трек [0] .ShowID"
Я видел примеры / учебные руководства, которые показывают вывод, подобный этому, но они не вдавались в подробности об этом.
После следования совету RPM1984 и внесения изменений я получил ошибку:
Элемент модели, передаваемый в словарь, имеет тип «System.Data.Objects.ObjectQuery`1 [BluesNetwork.Models.Track]», но для этого словаря требуется элемент модели типа «BluesNetwork.Models.Track».
Заранее благодарю за помощь
В