假设我有一个“Location”类,并且我正在使用 MVC3 创建一个脚手架列表(index.cshtml)。索引 html 页面使用@model IEnumerable。如果我想向列表中添加新位置,请按“创建”,然后使用 @model Project.Models.Location 得到一个新的 html 页面。
我不想进入新页面,而是希望使用 boostrap(twitter) 中的模式将创建页面作为弹出窗口。我尝试过使用partialview,但没有任何运气。无论我做什么,我都会收到字典错误消息。
传递到字典中的模型项的类型为“System.Data.Entity.Infrastruct.DbQuery`1[Project.Models.Location]”,但此字典需要类型为“Project.Models.Location”的模型项。
当我不获取部分视图时,模式(引导程序)本身正在工作。分部视图本身与生成的 create(CRUD) 完全相同。
编辑:我重写了整个事情。
Index:
@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>
_创建位置:
@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> }
您可以创建一个具有两个属性的视图模型:
然后将两个视图强类型化到视图模型中,您就应该准备就绪了。
Edit
视图模型:
public class MyViewModel()
{
public IEnumerable<LoLStats.Models.Location> Locations {get; set;}
public LoLStats.Models.Location Location {get; set;}
}
Index:
@model myNamespace.MyViewModel
...
@foreach (var item in Model.Locations) {
<ul>
<li>@Html.DisplayFor(modelItem => item.Locations.LocationName)</li>
</ul>
...
_创建位置:
@model myNamespace.MyViewModel
...
<div class="editor-label">
@Html.LabelFor(model => model.Location.LocationName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Location.LocationName)
@Html.ValidationMessageFor(model => model.Location.LocationName)
</div>
...
希望这些细节足以让您继续前进
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)