[英]ASP.NET MVC Repository and Controller Error
每當我嘗試轉到我的OrderHistory頁面時,都會收到此錯誤消息。
參數字典中包含“ Mis324Assignments.Controllers.MusicController”中方法“ System.Web.Mvc.ActionResult History(Int32)”的非空類型“ System.Int32”的參數“ Id”的空條目。 可選參數必須是引用類型,可為空的類型,或者必須聲明為可選參數。 參數名稱:參數
這是我的控制器:
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參數
當查看您的視圖實現時,似乎您沒有在“歷史記錄”操作中傳遞id,而“歷史記錄”操作需要該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 />
}
提交的答案已經作為注釋而不是答案。
我想到了!!! 在我的操作鏈接上,我沒有傳遞CustID參數。 這就是為什么它沒有獲取任何id參數的原因!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.