【问题标题】:Passing partial view as IEnumerable to single model将部分视图作为 IEnumerable 传递给单个模型
【发布时间】:2017-10-22 00:27:06
【问题描述】:

我正在尝试在创建视图上创建项目列表。

我正在使用 VS2017、EF6、MVC5、Code First。

我有一个名为 _Patients 的局部视图

@model IEnumerable<ContosoUniversity.Models.Patient>
<table class="table>">
    <thead>
        ....
    </thead>
    <tbody>
        @foreach (var item in Model)
        {
            <tr>
                <td>@Html.DisplayFor(modelItem => item.PatientFirstName)</td>
            </tr>
        }
    </tbody>
</table>

我的主要视图是 Create.cshtml

我正在使用

添加部分视图
@Html.Partial("_Patients")

我的主视图是使用单项模型

@model ContosoUniversity.Models.Patient

当我将主视图模型更改为IEnumerable&lt;ContosoUniversity.Models.Patient&gt;

列表正确显示,但表单字段给我错误,因为它的类型错误。

我只想将部分视图传递为IEnumerable,这可能吗?

【问题讨论】:

  • 不清楚您想在这里做什么 - 您是否想将 Patient 的单个实例从主模型传递给您的部分模型(以及为什么)?
  • @Html.DisplayFor(modelItem => item.PatientFirstName 缺少结束括号?您的问题中存在复制/粘贴格式问题?
  • 我的问题有什么不清楚的地方?我需要在创建视图中填充患者列表。当我说“我正在尝试在创建视图上创建项目列表”时,我认为我在最初的帖子中非常清楚。为什么你会认为我试图将 Patient 的单个实例从主要传递到部分?
  • TamusJRoyce,不,不是......
  • @AdamBlasingame 你能试试我的帖子,让我知道它是否有效

标签: c# asp.net-mvc-5 entity-framework-6


【解决方案1】:

尝试通过以下方式加载您的部分

@Html.Partial('_Patients', new List<ContosoUniversity.Models.Patient>())

【讨论】:

  • 同样的错误:传入字典的模型项的类型为“System.Collections.Generic.List`1[ContosoUniversity.Models.Patient]”,但该字典需要一个“类型”的模型项ContosoUniversity.Models.Patient'。
  • 我已经尝试过了,只是为了好玩,我再次将部分视图代码更改为 @{Html.RenderPartial("_Patients", new List { new ContosoUniversity .Models.Patient() });这与您发布的链接中的问题不完全相同,因为在他们的代码中,他们已经在他们的主视图中调用了 IEnumerable,而我不是。我已经说过我正在使用单个对象视图,我需要在其中使用 IEnumerable 部分视图。我不会在没有花费数小时在论坛上倾注类似问题的情况下发布问题,而我已经花了好几天的时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-16
  • 2019-02-01
  • 1970-01-01
  • 2012-02-02
  • 1970-01-01
相关资源
最近更新 更多