2017-04-23 6 views
0

MVC Webアプリケーションで検索を実装しようとしています。検索結果はテキスト入力に基づいて正しくフィルタリングされますが、結果は日付基準/ラジオボタンの選択に基づいてフィルタリングされません。私のコードは以下の通りです。c# - パラメータエラー/検索結果が不完全です

コントローラー:

public ActionResult Index(string SearchString, int? daysBack) 
    { 

     var query = from t in db.Transactions 
        select t; 

     // List of Transactions 
     List<Transaction> SelectedTransactions = new List<Transaction>(); 

     ViewBag.NumberAllTransactions = db.Transactions.Count(); 

     if (SearchString == "" || SearchString == null) 
     { 
      // Display/add to view bag 
      ViewBag.NumberSelectedTransactions = db.Transactions.ToList().Count; 

      // Display list 
      return View(db.Transactions.ToList()); 

     } 
     else 
     { 
      // Select Transactions searched for 
      SelectedTransactions = db.Transactions.Where(t => t.TransactionDescription.Contains(SearchString)).ToList(); 
      // Display/add to view bag 
      ViewBag.NumberSelectedTransactions = SelectedTransactions.ToList().Count; 
      // Sort list 
      SelectedTransactions.OrderBy(t => t.TransactionDate).ThenBy(t => t.TransactionType).ThenBy(t => t.TransactionDescription); 
      // Display list 
     } 

     // Transaction Date 
     if (daysBack == 0) 
     { 
      // Display/add to view bag 
      ViewBag.NumberSelectedTransactions = db.Transactions.ToList().Count; 

      // Display list 
      return View(db.Transactions.ToList()); 
     } 
     else 
     { 
      var oldestDate = (DateTime.Today).AddDays(Convert.ToDouble(daysBack) * -1); 

      query = from t in db.Transactions 
        where t.TransactionDate >= oldestDate 
        select t; 

     } 

     List<Transaction> NewSelectedTransactions = query.ToList(); 

     ViewBag.NumberAllTransactions = db.Transactions.ToList().Count(); 
     ViewBag.NumberSelectedTransactions = SelectedTransactions.Count; 


     return View(NewSelectedTransactions); 

ビュー:

<p class="form-group"> 
    Search: @Html.TextBox("SearchString", null, new { @class = "form-control" }) <br /> 

    <div class="form-group"> 
     <div class="form-check"> 
      <p>Date</p> 
      <label class="form-check-label"> 
       @Html.RadioButton("daysBack", 15, new { @class = "form-check-input" }) Last 15 Days <br /> 
      </label> 
      <br /> 
      <label class="form-check-label"> 
       @Html.RadioButton("daysBack", 30, new { @class = "form-check-input" }) Last 30 Days 
      </label> 
      <br /> 
      <label class="form-check-label"> 
       @Html.RadioButton("daysBack", 60, new { @class = "form-check-input" }) Last 60 Days 
      </label> 
     </div> 
    </div> 

なぜそれは私が検索するラジオボタンを選択すると、それは私の検索結果は内の日付に絞られることにつながるものではないということです関連する範囲?

+0

ラジオボタンを選択したときにページがポストバックしますか?結果は表示されますか?コントローラーにはどのような値が渡されますか?実際の動作と予想される動作についての詳細情報を提供する必要があります。 –

+0

ここにあるすべてが私にとって正しいものです。戻ってきていることを確認しましたか? TransactionDateの結果が期待どおりであることを確認しましたか? –

+0

ページは返信されますが、選択したラジオボタンでは何もしないようです(したがって、daysBackが正しく渡されているかどうかはわかりません)。たとえば、過去15日間を選択すると、結果は4/18/2017(有効)からのトランザクションと2014年2月24日からのトランザクション(無効)から戻ってきます。これらは現在データベース内の唯一の2つのレコードですが、Last 15が選択されたときには4/18レコードのみが戻ってきます。 – CodeFrog

答えて

0

私の質問に問題がありました... LINQのWhere節がないため、日付リミッタが有効にならなかった。

関連する問題