假设我有一个类“位置”,并且我正在使用 MVC3 创建一个脚手架列表(index.cshtml)。index html 页面使用@model IEnumerable。如果我想在列表中添加一个新位置,我按下创建,最后我会使用@model Project.Models.Location 得到一个新的 html 页面。
我不想进入新页面,而是希望使用 boostrap(twitter) 中的模式将创建页面作为弹出窗口。我试过使用 partialview 没有任何运气。无论我做什么,我都会收到字典错误消息。
传入字典的模型项的类型为“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> }