クラス 'Location' があり、MVC3 を使用して足場リスト (index.cshtml) を作成しているとします。index html ページは @model IEnumerable を使用します。リストに新しい場所を追加したい場合は、[作成] をクリックすると、@model Project.Models.Location を使用して新しい html ページが作成されます。
新しいページに移動する代わりに、boostrap(twitter) のモーダルを使用して作成ページをポップアップとして表示したいと思います。私はパーシャルビューを使ってみましたが、運がありませんでした。私が何をしても、辞書のエラーメッセージが表示されます。
ディクショナリに渡されたモデル アイテムのタイプは 'System.Data.Entity.Infrastructure.DbQuery`1[Project.Models.Location]' ですが、このディクショナリにはタイプ 'Project.Models.Location' のモデル アイテムが必要です。
モーダル(ブートストラップ)自体は、部分ビューをフェッチしていないときに機能しています。部分ビュー自体は、生成された create(CRUD) とまったく同じです。
追記:全部書き直しました。
索引:
@model IEnumerable<LoLStats.Models.Location>
@{
ViewBag.Title = "Index";
}
@foreach (var item in Model) {
<ul>
<li>@Html.DisplayFor(modelItem => item.LocationName)</li>
</ul>
}
<a class="btn" data-toggle="modal" href="#myModal" >Create</a>
<div class="modal hide" id="myModal">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h3>Modal header</h3>
</div>
<div class="modal-body">
<p>@Html.Partial("_createLocation")</p>
</div>
<div class="modal-footer">
<a href="#" class="btn" data-dismiss="modal">Close</a>
<a href="#" class="btn btn-primary">Save changes</a>
</div>
</div>
_createLocation:
@model LoLStats.Models.Location
@{ ViewBag.Title = "作成"; }
@using (Html.BeginForm()) { @Html.ValidationSummary(true) 場所
<div class="editor-label"> @Html.LabelFor(model => model.LocationName) </div> <div class="editor-field"> @Html.EditorFor(model => model.LocationName) @Html.ValidationMessageFor(model => model.LocationName) </div> <p> <input type="submit" value="Create" /> </p> </fieldset> }