MVC动态模型查看

时间:2014-06-20 14:16:58

标签: c# asp.net-mvc

  

传入字典的模型项的类型是' System.Collections.Generic.Dictionary 2[CapacityPlanner2.Models.Segment, CapacityPlanner2.Models.Product]', but this dictionary requires a model item of type 'System.Collections.Generic.Dictionary 2 [System.Object,System.Object]

我的观点有@model Dictionary<dynamic, dynamic>

我正在传递以下Dictionary<Project, Segment>

不应该有用吗?

我的部分观点:

@model Dictionary<dynamic, Dictionary<dynamic, List<dynamic>>>

我的主要观点

@model  Dictionary<dynamic, Dictionary<dynamic, Dictionary<dynamic, List<dynamic>>>>


@foreach (var kvp in Model) 
{   
    @Html.Partial("_part", kvp.Value)
}

我想添加部分视图,因为我想重用它。但在此之前一切正常。

2 个答案:

答案 0 :(得分:0)

如评论中所述,您必须在创建模型时传递dynamic类型。这是一个工作样本。但正如评论中所述,请检查您是否真的需要dynamic,可能interfaced model就足够了。

    public ActionResult Testing()
    {
        var data = new Dictionary<dynamic, Tuple<dynamic, dynamic>>
        {
            {1, new Tuple<dynamic, dynamic>(new Project{Name = "P1"}, new Segment{Id = "S1"})},
        };

        return View(data);
    }

    @foreach (var d in @Model)
          {
                  var item1 = @d.Value.Item1 as Project;
                  var item2 = @d.Value.Item2 as Segment;
                  <p> @d.Key + ": "  + @item1.Name + " - " + @item2.Id</p>
          }

答案 1 :(得分:0)

似乎你只能声明

@Model dynamic

然后将其投射到任何东西