Asp.net 但本词典需要类型为';System.Collections.Generic.IEnumerable`1[mvcapapplication1.Models.FileStore]';
我跟在后面。在C#中使用VS2010、ASP.NET 4.0、MVC3,在SQL Server 2008R2中使用ADO.NET。我收到以下错误消息 传递到字典的模型项的类型为“MVCAPApplication1.Models.FileStore”,但此字典需要“System.Collections.Generic.IEnumerableAsp.net 但本词典需要类型为';System.Collections.Generic.IEnumerable`1[mvcapapplication1.Models.FileStore]';,asp.net,asp.net-mvc-3,Asp.net,Asp.net Mvc 3,我跟在后面。在C#中使用VS2010、ASP.NET 4.0、MVC3,在SQL Server 2008R2中使用ADO.NET。我收到以下错误消息 传递到字典的模型项的类型为“MVCAPApplication1.Models.FileStore”,但此字典需要“System.Collections.Generic.IEnumerable1[MVCAPApplication1.Models.FileStore]”类型的模型项。 描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有
1[MVCAPApplication1.Models.FileStore]”类型的模型项。
描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源。
异常详细信息:System.InvalidOperationException:传递到字典的模型项的类型为“MVCAPApplication1.Models.FileStore”,但此字典需要类型为“System.Collections.Generic.IEnumerable
1[MVCAPApplication1.Models.FileStore]”的模型项。
源错误:在执行当前web请求期间生成了未处理的异常。有关异常的起源和位置的信息可以使用下面的异常堆栈跟踪来识别
我不担心我的索引方法可能出错。如果有人能告诉我这个问题的解决方法,请提前感谢
控制器中的索引方法具有以下代码
FileStore db = new FileStore();
public ActionResult Index()
{
var db = new FileStore();
return View(db);
}
public FileContentResult GetFile(int id)
{
SqlDataReader rdr; byte[] fileContent = null;
string mimeType = ""; string fileName = "";
const string connect = @"Server=.\SQLExpress;Database=FileTest;Trusted_Connection=True;";
using (var conn = new SqlConnection(connect))
{
var qry = "SELECT FileContent, MimeType, FileName FROM FileStore WHERE ID = @ID";
var cmd = new SqlCommand(qry, conn);
cmd.Parameters.AddWithValue("@ID", id);
conn.Open();
rdr = cmd.ExecuteReader();
if (rdr.HasRows)
{
rdr.Read();
fileContent = (byte[])rdr["FileContent"];
mimeType = rdr["MimeType"].ToString();
fileName = rdr["FileName"].ToString();
}
}
return File(fileContent, mimeType, fileName);
}
@model IEnumerable<MvcApplication1.Models.FileStore>
控制器中的Create方法具有以下方法
public ActionResult Create()
{
foreach (string upload in Request.Files)
{
if (!Request.Files[upload].HasFile()) continue;
string mimeType = Request.Files[upload].ContentType;
Stream fileStream = Request.Files[upload].InputStream;
string fileName = Path.GetFileName(Request.Files[upload].FileName);
int fileLength = Request.Files[upload].ContentLength;
byte[] fileData = new byte[fileLength];
fileStream.Read(fileData, 0, fileLength);
const string connect = @"Server=.\SQLExpress;Database=FileTest;Trusted_Connection=True;";
using (var conn = new SqlConnection(connect))
{
var qry = "INSERT INTO FileStore (FileContent, MimeType, FileName) VALUES (@FileContent, @MimeType, @FileName)";
var cmd = new SqlCommand(qry, conn);
cmd.Parameters.AddWithValue("@FileContent", fileData);
cmd.Parameters.AddWithValue("@MimeType", mimeType);
cmd.Parameters.AddWithValue("@FileName", fileName);
conn.Open();
cmd.ExecuteNonQuery();
}
}
return View();
}
GetFile方法具有以下代码
FileStore db = new FileStore();
public ActionResult Index()
{
var db = new FileStore();
return View(db);
}
public FileContentResult GetFile(int id)
{
SqlDataReader rdr; byte[] fileContent = null;
string mimeType = ""; string fileName = "";
const string connect = @"Server=.\SQLExpress;Database=FileTest;Trusted_Connection=True;";
using (var conn = new SqlConnection(connect))
{
var qry = "SELECT FileContent, MimeType, FileName FROM FileStore WHERE ID = @ID";
var cmd = new SqlCommand(qry, conn);
cmd.Parameters.AddWithValue("@ID", id);
conn.Open();
rdr = cmd.ExecuteReader();
if (rdr.HasRows)
{
rdr.Read();
fileContent = (byte[])rdr["FileContent"];
mimeType = rdr["MimeType"].ToString();
fileName = rdr["FileName"].ToString();
}
}
return File(fileContent, mimeType, fileName);
}
@model IEnumerable<MvcApplication1.Models.FileStore>
Index.cshtml like具有以下代码
FileStore db = new FileStore();
public ActionResult Index()
{
var db = new FileStore();
return View(db);
}
public FileContentResult GetFile(int id)
{
SqlDataReader rdr; byte[] fileContent = null;
string mimeType = ""; string fileName = "";
const string connect = @"Server=.\SQLExpress;Database=FileTest;Trusted_Connection=True;";
using (var conn = new SqlConnection(connect))
{
var qry = "SELECT FileContent, MimeType, FileName FROM FileStore WHERE ID = @ID";
var cmd = new SqlCommand(qry, conn);
cmd.Parameters.AddWithValue("@ID", id);
conn.Open();
rdr = cmd.ExecuteReader();
if (rdr.HasRows)
{
rdr.Read();
fileContent = (byte[])rdr["FileContent"];
mimeType = rdr["MimeType"].ToString();
fileName = rdr["FileName"].ToString();
}
}
return File(fileContent, mimeType, fileName);
}
@model IEnumerable<MvcApplication1.Models.FileStore>
@model IEnumerable
您的视图是强类型的文件存储集合(例如列表)。如果只发送一个对象,则应更改此设置。否则,首先创建一个集合,向其中添加对象,然后将其发送到视图
如果使用第一种方法,请在索引视图中查找第一行
Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcApplication1.Models.FileStore>>
或
谢谢,太好了。谢谢你的帮助。我通常喜欢有一个带有db getter和setter的sperate类。我正在尝试使用mikesdotnetting.com网站实现多个db图像。