1
リストプロパティを持つモデルをデータで埋めようとしていますが、コントローラーで定義したリストデータを渡しても問題ありません私の見解に。Asp.net MVCモデルはリストプロパティを表示するためにバインドしません
私はこのようになりましたのviewmodel:それにいくつかの基本データを追加し、コントローラ
public class FilmsViewModel
{
public Films film { get; set; }
public List<FilmExhibitions> exhibitions { get; set; }
public FilmsViewModel()
{
film = new Films();
exhibitions = new List<FilmExhibitions>();
}
}
を:
public class AdminController : Controller
{
private IItemsRepository repository = new DbItemsRepository();
// GET: Admin
public ActionResult Index()
{
return View();
}
public ActionResult AddItem()
{
return View();
}
public ActionResult _AddFilm()
{
FilmsViewModel filmsViewModel = new FilmsViewModel();
filmsViewModel.exhibitions.Add(new FilmExhibitions());
filmsViewModel.exhibitions.Add(new FilmExhibitions());
filmsViewModel.exhibitions[0].startTime = new DateTime(2017, 1, 1, 0, 0, 0);
filmsViewModel.exhibitions[0].endTime = new DateTime(2017, 1, 1, 0, 0, 0);
filmsViewModel.exhibitions[1].startTime = new DateTime(0001, 1, 1, 0, 0, 0);
filmsViewModel.exhibitions[1].endTime = new DateTime(0001, 1, 1, 0, 0, 0);
return PartialView(new FilmsViewModel());
}
[HttpPost]
public ActionResult _AddFilm(FilmsViewModel filmViewModel)
{
repository.AddItem(filmViewModel.film);
Items item = repository.GetItemByName(filmViewModel.film.name);
return View();
}
そして最後にちょうど受け入れることを望んでいない私の見解をこのデータ:
@using Project_IHFF.Models
@model FilmsViewModel
@Html.ValidationSummary()
@using (Html.BeginForm("_AddFilm"))
{
<label>Name: </label>
@Html.TextBoxFor(x => x.film.name, new { @class = "form-control"})
<br />
<label>Description:</label>
@Html.TextBoxFor(x => x.film.description, new { @class = "form-control" })
<br />
<label>Location: </label>
@Html.TextBoxFor(x => x.film.location, new { @class = "form-control" })
<br />
<label>Price: </label>
@Html.TextBoxFor(x => x.film.price, new { @class = "form-control" })
<br />
<label>Directors:</label>
@Html.TextBoxFor(x => x.film.director, new { @class = "form-control" })
<br />
<label>Actors: </label>
@Html.TextBoxFor(x => x.film.actors, new { @class = "form-control" })
<br />
<label>Capacity: </label>
@Html.TextBoxFor(x => x.film.capacity, new { @class = "form-control" })
<br />
<br />
for (var i = 0; i < Model.exhibitions.Count(); i++)
{
@Html.HiddenFor(x => x.exhibitions[i].startTime);
@Html.HiddenFor(x => x.exhibitions[i].endTime);
@Html.HiddenFor(x => x.exhibitions[i].id);
}
<label>First Exhibition</label><br />
<label>Starting Time:</label>
@Html.TextBoxFor(x => x.exhibitions[0].startTime, new { @class = "form-control" })
<br />
<label>Ending Time:</label>
@Html.TextBoxFor(x => x.exhibitions[0].endTime, new { @class = "form-control" })
<br />
<br />
<div id="HiddenDiv">
<label>Second Exhibition (Optional)</label>
<br />
<label>Starting Time:</label>
@Html.TextBoxFor(x => x.exhibitions[1].startTime, new { @class = "form-control", id = "HiddenTextBox" })
<br />
<label>Ending Time:</label>
@Html.TextBoxFor(x => x.exhibitions[1].endTime, new { @class = "form-control", id = "HiddenTextBox" })
<br />
</div>
<input type="button" id="VisibilityButton" name="show" value="+ Add second exhibition" onclick="showDiv()" class="btn btn-primary" />
<script>
function showDiv() {
document.getElementById('HiddenDiv').style.display = "block";
document.getElementById('VisibilityButton').value = "- Remove second exhibition";
document.getElementById('VisibilityButton').onclick = function() { hideDiv() };
}
function hideDiv() {
document.getElementById('HiddenDiv').style.display = "none";
document.getElementById('VisibilityButton').value = "+ Add second exhibition";
document.getElementById('VisibilityButton').onclick = function() { showDiv() };
}
</script>
<input type="submit" value="Submit" class="btn btn-primary" />
誰も私がここで間違っているアイデアはありますか?私はこの時点で完全に迷っています。
ようになっているはずと信じては'あなた '_AddFilm'コントローラのアクションから、あなたの代わりに' 'PartialView(filmsViewModel)を返す必要があります。 –
うわー、私はそれを逃したとは思わない。どうもありがとう! –
ypuがAddFilmアクションに値を入力すると予想される場合、 'return PartialView(filmsViewModel)' – Developer