2017-03-05 18 views
0

OrderHistoryページに移動しようとすると、このエラーメッセージが表示されます。ASP.NET MVCリポジトリおよびコントローラエラー

パラメータ辞書に、 'Mis324Assignments.Controllers.MusicController'の 'System.Web.Mvc.ActionResult History(Int32)'メソッドのnullable型 'System.Int32'のパラメータ 'Id'のnullエントリが含まれています。オプションのパラメータは、参照型、null可能型、またはオプションのパラメータとして宣言する必要があります。 パラメータ名:パラメータ

これは私のコントローラである:

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//[email protected](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型パラメータに何も渡していないと言っている理由を知らない。

+0

履歴アクションを呼び出す場所でビューの実装を共有できますか? –

+0

私は、履歴ページ –

+0

にリダイレクトされているあなたのActionlinkを意味していますが、あなたのフォーム(action = "〜/ Music/History")でidを渡している場所はどこですか?それはあなたの全体のフォームですか? – KellyMarchewa

答えて

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 /> 
} 
-2

が、私はそれを考え出しました!私のアクションリンクでは、私はCustIDパラメータを渡さなかった。そのため、idパラメータが得られなかったのです!

0

回答は既にコメントとして回答として提示されません。

関連する問題