mvc3模型不包含GetEnumerator的定义

时间:2014-10-31 10:34:27

标签: c# asp.net-mvc-3

这是控制器。 我需要的是在视图中访问IList命名模型。我想显示Barcode和ImageUrl。

using BezoekerSysteem.Models;
using System.Data.SqlClient;
using System.Web.Mvc;
using System.Data;
using System;
using System.Collections.Generic;

namespace BezoekerSysteem.Controllers
{
    public class HomeController : Controller
    {

public ActionResult PrintPage()
            {
                SqlConnection con = new SqlConnection("");
                string query = "select * From visitors";
                DataTable dt = new DataTable();
                con.Open();
                SqlDataAdapter sda = new SqlDataAdapter(query, con);
                sda.Fill(dt);
                con.Close();
                IList<VisitorResponse> model = new List<VisitorResponse>();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    var p = dt.Rows[i]["BarCodeImage"];
                    model.Add(new VisitorResponse()
                    {
                        Barcode = dt.Rows[i]["Barcode"].ToString(),
                        ImageUrl = dt.Rows[i]["BarCodeImage"] != null ? "data:image/jpg;base64," + Convert.ToBase64String((byte[])dt.Rows[i]["BarCodeImage"]) : ""
                    });
                }
                return View(model);
            }
}

这是模型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace BezoekerSysteem.Models
{
    public class VisitorResponse
    {
        public byte[] BarcodeImage      { get; set; }
        public string Barcode           { get; set; }
        public string ImageUrl          { get; set; }
    }
}

这就是我的尝试。

@model BezoekerSysteem.Models.VisitorResponse

<!DOCTYPE html>

<html>
<head>
</head>
    <body>
            <div>
            @foreach (var item in Model) {
                  @Html.DisplayFor(modelItem => item.Barcode) <br />

                  <img src="@item.ImageUrl"/>
                }    
            </div>      
    </body>
</html>

错误消息:

foreach statement cannot operate on variables of type 'BezoekerSysteem.Models.VisitorResponse' because 'BezoekerSysteem.Models.VisitorResponse' does not contain a public definition for 'GetEnumerator'

我也试着改变它。

@model BezoekerSysteem.Models.VisitorResponse

对此。

@model IEnumerable<BezoekerSysteem.Models.VisitorResponse>

然后我在visual studio中没有错误,但是当我运行它时,我的浏览器出现错误

The model item passed into the dictionary is of type 'BezoekerSysteem.Models.VisitorResponse', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[BezoekerSysteem.Models.VisitorResponse]'.

2 个答案:

答案 0 :(得分:0)

首先,我会阅读有关数据访问的Entity Framework;它会让你的生活变得更轻松。

正如你的问题: 您正试图遍历一个不可能的对象。这就是你的第一个错误。 所以改变@model是一件好事。

第二个错误很奇怪,请确保在再次尝试时停止调试,重建并重新运行。

答案 1 :(得分:0)

在视图中更改模型,如下所示。 IList不能接受IEnumerable,但IEnumurable接受Ilist 请尝试下面的代码

@model List<BezoekerSysteem.Models.VisitorResponse>