gpt4 book ai didi

c# - “索引超出范围。必须为非负数且小于集合的大小。\r\n参数名称 : index

转载 作者:行者123 更新时间:2023-11-30 23:14:09 35 4
gpt4 key购买 nike

我目前正在使用 asp.net mvc5 学习 Web 开发,现在正在处理我的学校项目。我想存储和显示数据库中的图像。我遇到了这个错误。

here is the screenshot

这是我的代码这是 Controller :

public ActionResult AddItems()
{
return View();
}

[HttpPost]
public ActionResult AddItems(FormCollection form)
{
StoreItems i = new StoreItems();
//i.ID = int.Parse(form["AlbumID"]);
i.AlbumName = form["AlbumName"];
i.Artist = form["AlbumArtist"];
i.Genre = form["AlbumGenre"];
i.DateReleased = DateTime.Parse(form["AlbumDateReleased"]);
i.Price = int.Parse(form["AlbumPrice"]);
i.Downloads = int.Parse(form["AlbumDownloads"]);
i.Listens = int.Parse(form["AlbumListens"]);
i.RecordLabel = form["RecordLabel"];
HttpPostedFileBase file = Request.Files[0];
i.PicturePath = file.FileName.ToString();

DAL.AddItems(i);
return RedirectToAction("ItemLists");
}

这是模型:

public static void AddItems(StoreItems i)
{

byte[] bytes;
if (string.IsNullOrEmpty(i.PicturePath))
{
string filename = System.Web.HttpContext.Current.Server.MapPath("~/Content/Images/default-artwork.png");
bytes = System.IO.File.ReadAllBytes(filename);
}

else
{
string filename = i.PicturePath;
bytes = System.IO.File.ReadAllBytes(filename);


}


SqlConnection con = new SqlConnection(DAL.cs);
con.Open();
SqlCommand com = new SqlCommand(
"INSERT INTO AlbumsTb ( AlbumName, Artist, Genre, DateReleased, Price, Downloads, Listens, RecordLabel, DateAdded, AlbumArt) VALUES( @AlbumName, @Artist, @Genre, @DateReleased, @Price, @Downloads, @Listens, @RecordLabel, @DateAdded, @AlbumArt)", con);
//com.Parameters.AddWithValue("@ID", i.ID);
com.Parameters.AddWithValue("@AlbumName", SqlDbType.VarChar).Value = i.AlbumName;
com.Parameters.AddWithValue("@Artist", SqlDbType.VarChar).Value = i.Artist;
com.Parameters.AddWithValue("@Genre", SqlDbType.VarChar).Value = i.Genre;
com.Parameters.AddWithValue("@DateReleased", SqlDbType.Date).Value = i.DateReleased;
com.Parameters.AddWithValue("@Price",i.Price);
com.Parameters.AddWithValue("@Downloads", i.Downloads);
com.Parameters.AddWithValue("@Listens", i.Listens);
com.Parameters.AddWithValue("@RecordLabel", SqlDbType.VarChar).Value = i.RecordLabel;
com.Parameters.AddWithValue(@"DateAdded", DateTime.Now.ToString());

com.Parameters.AddWithValue("@AlbumArt", SqlDbType.VarBinary).Value = bytes;

com.ExecuteNonQuery();
con.Close();

}

最佳答案

没有随请求发布的文件。这意味着数组是空的。因此索引超出范围错误。您还应该练习防御性编码并检查以确保数组已填充。如果该文件是必需的,那么您可以优雅地出错并返回相关的错误消息(BadRequest..etc)

[HttpPost]
public ActionResult AddItems(FormCollection form)
{
StoreItems i = new StoreItems();
//i.ID = int.Parse(form["AlbumID"]);
i.AlbumName = form["AlbumName"];
i.Artist = form["AlbumArtist"];
i.Genre = form["AlbumGenre"];
i.DateReleased = DateTime.Parse(form["AlbumDateReleased"]);
i.Price = int.Parse(form["AlbumPrice"]);
i.Downloads = int.Parse(form["AlbumDownloads"]);
i.Listens = int.Parse(form["AlbumListens"]);
i.RecordLabel = form["RecordLabel"];
var files = Request.Files;
if(files.Count > 0) {
var file = files[0];
i.PicturePath = file.FileName.ToString();
} else {
//...return some error code or validation message.
}

DAL.AddItems(i);
return RedirectToAction("ItemLists");

}

关于c# - “索引超出范围。必须为非负数且小于集合的大小。\r\n参数名称 : index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43295173/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com