【问题标题】:How to add a list<T> to view with a single model如何添加列表<T> 以使用单个模型查看
【发布时间】:2015-06-01 23:05:18
【问题描述】:

尝试将网格添加到我的详细信息页面时出错。错误是:

传入字典的模型项的类型为“GridMvc.Html.HtmlGrid1[MyApp.Models.RecipientActivityMetadata]', but this dictionary requires a model item of type 'System.Collections.Generic.List1[MyApp.Models.RecipientActivityMetadata]”。

MVC4 视图是详细信息页面和列表的组合。我正在使用如下所示的视图模型:

public class FormViewModel()
{
    public RecipientMetadata Recipient { get; set; }
    public StudentActivityMetadata StudentActivity    { get; set; }
    public List<RecipientActivityMetadata> RecipientActivites { get; set; }
}

视图顶部是:

@model MyApp.Models.ViewModels.FormViewModel

它会渲染一个包含列表的局部视图:

@Html.Partial("_grid", Model.RecipientActivites)

部分看起来像这样:

@using GridMvc.Html
@model List<MyApp.Models.RecipientActivityMetadata>
<p>
    @Html.ActionLink("Create New", "Create")
</p>
<div>
    @Html.Grid(Model).Columns(columns =>
    {
        columns.Add(c => c.ActCount).Titled("Activity Num");
        columns.Add(c => c.ActivityType).Titled("Activity Type");
        columns.Add(c => c.FundCode).Titled("FundCode");
        columns.Add(c => c.Hours).Titled("Hours");
    }).WithPaging(10)
</div>

【问题讨论】:

  • @Html.Grid 有一个名为 _grid 的局部渲染。因此,看起来您需要将此部分重命名为不同的名称或指定部分视图的完整路径。我没有使用过 MVC.Grid,但从文档来看,它看起来像那样。
  • 就是这样,我更改了名称,现在它可以工作了。我什至没有在文档中注意到这一点。感谢您指出。继续并发布答案,以便我标记它。
  • 不客气。我已将其发布为答案。

标签: asp.net-mvc-4 asp.net-mvc-partialview grid.mvc


【解决方案1】:

从评论到回答

根据Grid.Mvc 提供的文档,@Html.Grid 使用局部视图_Grid.cshtml。因为您的局部视图也具有相同的名称,所以解决方案是为您的局部视图使用不同的名称。

【讨论】:

    猜你喜欢
    • 2022-07-20
    • 2019-07-02
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多