这是控制器。 我需要的是在视图中访问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]'.
答案 0 :(得分:0)
首先,我会阅读有关数据访问的Entity Framework;它会让你的生活变得更轻松。
正如你的问题: 您正试图遍历一个不可能的对象。这就是你的第一个错误。 所以改变@model是一件好事。
第二个错误很奇怪,请确保在再次尝试时停止调试,重建并重新运行。
答案 1 :(得分:0)
在视图中更改模型,如下所示。 IList不能接受IEnumerable,但IEnumurable接受Ilist 请尝试下面的代码
@model List<BezoekerSysteem.Models.VisitorResponse>