gpt4 book ai didi

asp.net-mvc-3 - 如何在同一页面(列表/创建)MVC3 中使用@model IEnumerable<> 和@model <>

转载 作者:行者123 更新时间:2023-12-03 19:48:54 25 4
gpt4 key购买 nike

假设我有一个“位置”类,我正在使用 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”的模型项。

当我不获取局部 View 时,模态( bootstrap )本身正在工作。局部 View 本身与生成的 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 = "Create"; }

@using (Html.BeginForm()) { @Html.ValidationSummary(true) Location

    <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> }

最佳答案

您可以创建一个具有两个属性的 View 模型:

  • 父 View 的 IEnumerable
  • 模态的单一对象

  • 然后将这两个 View 强行输入到 View 模型中,您应该一切就绪。

    编辑

    View 模型:
    public class MyViewModel()
    {
    public IEnumerable<LoLStats.Models.Location> Locations {get; set;}
    public LoLStats.Models.Location Location {get; set;}
    }

    指数:
    @model myNamespace.MyViewModel
    ...
    @foreach (var item in Model.Locations) {
    <ul>
    <li>@Html.DisplayFor(modelItem => item.Locations.LocationName)</li>
    </ul>
    ...

    _createLocation:
    @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>
    ...

    希望这些细节足以让您继续前进

    关于asp.net-mvc-3 - 如何在同一页面(列表/创建)MVC3 中使用@model IEnumerable<> 和@model <>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11939551/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com