每当我尝试访问OrderHistory页面时,都会收到此错误消息。
参数字典包含参数' Id'的空条目。非可空类型的System.Int32' for method' System.Web.Mvc.ActionResult History(Int32)' in' Mis324Assignments.Controllers.MusicController'。可选参数必须是引用类型,可空类型,或者声明为可选参数。 参数名称:参数
这是我的控制者:
public ActionResult History(int Id)
{
return View(mor.GetHistory(Id));
}
这是我的存储库:
public List<MusicHistoryModel> GetHistory(int custID)
{
using (IDbConnection db = new SqlConnection(connectString))
{
string sql = @"SELECT OI.OrderId, OI.ASIN, OI.Qty, OI.Title, OI.Artist, OI.Price, O.OrderDate
FROM tblOrders as O join tblOrderItems as OI on O.OrderId = OI.OrderId
Where O.CustId = @custID";
List<MusicHistoryModel> history = db.Query<MusicHistoryModel>(sql,new { custID }).ToList();
return history;
}
}
这是我的观点:
@model IEnumerable<Mis324Assignments.Models.MusicHistoryModel>
@{
ViewBag.Title = "History";
Layout = "~/Views/Music/_3ColLayout.cshtml";
}
<h2>Order History</h2>
@foreach (var item in Model)
{
<div class="row" style="padding:4px;">
<div class="col-md-2">
<img src="http://images.amazon.com/images//P@(item.ASIN).01._SCTHUMBZZZ_V1115763748_.jpg"
class='productImage' style="margin:0 0 5px 10px;" />
</div>
@item.OrderID
@item.OrderDate
@item.title
@item.artist
@item.price
@item.qty
</div>
}
这是我的ActionLink,重定向到历史记录视图:
<form action="~/Music/History" method="post" class="enhancement">
<input type="submit" value="Order History*" /><br />
</form>
我在我的控制器中传入一个int id,并使用该int id作为custID从我的存储库中获取信息。我不知道为什么错误消息说我没有将任何内容传递给int id参数
答案 0 :(得分:0)
在查看您的视图实现时,您似乎没有在“历史记录操作”所需的“历史记录”操作中传递ID。
您可以通过以下方式传递id作为参数:
@using(Html.BeginForm("History", "Music",
new { Id= your_id_should_be_here }, FormMethod.Post, new{ @class="enhancement"})
{
<input type="submit" value="Order History*" /><br />
}
答案 1 :(得分:0)
提交的答案已经将其作为评论而非答案。
答案 2 :(得分:-2)
我想通了!在我的Action链接上,我没有传入CustID参数。这就是为什么它没有得到任何id参数!