【问题标题】:Change type from System.Int32 to System.Collections.Generic.IEnumerable将类型从 System.Int32 更改为 System.Collections.Generic.IEnumerable
【发布时间】:2012-03-17 23:53:49
【问题描述】:

使用实体框架 4、MVC3、C# 单击添加函数导入后,我在“SP_Exploder_Result”类型的模型中创建了一个复杂类型。

我的控制器如下:

    public ViewResult Exploder(int id)
    {
        var r = db.SP_PartExploder(id);
        return View(id);
    }

我尝试搭建视图并迭代传递给它的模型:

@model IEnumerable<EM6.Models.SP_PartExploder_Result>
@foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.ComponentId)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Name)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Total)
    </td>

传入字典的模型项的类型为“System.Int32”,但该字典需要类型为“System.Collections.Generic.IEnumerable`1[EM6.Models.SP_PartExploder_Result]”的模型项。

任何想法如何将控制器获得的模型转换为正确的类型?

【问题讨论】:

    标签: c# asp.net-mvc-3 stored-procedures complextype


    【解决方案1】:

    除非我误解了你的问题,否则我认为变量“r”需要传递到视图而不是 int Id。

    目前看来,int 被用作视图的模型,而不是您调用 db.SP_PartExploder 的结果。

    【讨论】:

    • 谢谢。一定是我盯着屏幕发疯了最后几个小时!!!
    【解决方案2】:

    int -> IEnumerable&lt;int&gt; 返回单个项目:Enumerable.Single 或 Enumerable.Repeat

    int myInt = 42;
    IEnumerable<int> myInts = Enumerable.Repeat(myInt, 1);
    

    【讨论】:

      猜你喜欢
      • 2021-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多