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>
なぜそれは私が検索するラジオボタンを選択すると、それは私の検索結果は内の日付に絞られることにつながるものではないということです関連する範囲?
ラジオボタンを選択したときにページがポストバックしますか?結果は表示されますか?コントローラーにはどのような値が渡されますか?実際の動作と予想される動作についての詳細情報を提供する必要があります。 –
ここにあるすべてが私にとって正しいものです。戻ってきていることを確認しましたか? TransactionDateの結果が期待どおりであることを確認しましたか? –
ページは返信されますが、選択したラジオボタンでは何もしないようです(したがって、daysBackが正しく渡されているかどうかはわかりません)。たとえば、過去15日間を選択すると、結果は4/18/2017(有効)からのトランザクションと2014年2月24日からのトランザクション(無効)から戻ってきます。これらは現在データベース内の唯一の2つのレコードですが、Last 15が選択されたときには4/18レコードのみが戻ってきます。 – CodeFrog