我正在使用Entity Framework和C#在MVC中开发应用程序。当我单击年份时,我想根据月份显示所有案件。为了过滤年份,我运行循环以获取从2009年到当前年的年份,并像按钮一样显示年份。默认情况下,或者当我第一次进入页面时,我应该能够看到当前年份的详细信息。当我单击任何年份时,页面应刷新并获取该单击年份每个月的所有案例。如果我单击“ 2017”,我应该只能得到2017年有案例的月份。
为简单起见,我在顶部的所有年份都像按钮。当我单击任何年份时,我应该填充该年份的数据。
类似这样的东西:
查看:
@model List<Magazine.Models.Case>
@{
ViewBag.Title = "CaseList";
}
<div>
<div>
<div class="container">
<div>
@{
var year = DateTime.Now.Year;
for (var i = year; i > 2009; i--)
{
<div class="col-md-1 ">
@Html.ActionLink(i.ToString(), "MyCases/" + i, new { onclick="$('.container').hide(); $('.container.i').show();" })
</div>
}
}
</div>
</div>
<div class="container">
@foreach (var groupMonth in Model.GroupBy(case => new { case.date.Value.Year, case.date.Value.Month }))
{
<h3> @System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(groupMonth.Key.Month)</h3>
foreach (var case in groupMonth)
{
<div class="row">
@case.date
<div>
@case.title
</div>
<div>
@case.description
</div>
</div>
}
}
</div>
控制器:
public ActionResult MyCases(int year = 0)
{
var cases = _db.case.Where(p => p.date.Value.Year >= 2009 &&
p.pdate.Value.Year <= DateTime.Now.Year)
.OrderByDescending(p => p.date).ToList();
return View(cases);
}
现在在我的代码中,我刚刚添加了Years循环并为此添加了onclick,但是它没有基于Year过滤数据。 我需要获取单击年份的值并将其传递给foreach循环以显示单击年份的详细信息。我该怎么办?
答案 0 :(得分:0)
我会:
您也许可以使用@ajax帮助器
https://www.c-sharpcorner.com/UploadFile/abhikumarvatsa/ajax-actionlink-and-html-actionlink-in-mvc/
答案 1 :(得分:0)
我将第二个容器移动到部分视图中,并将单击的年份(从for循环传递到控制器)传递到控制器以过滤数据。 查看: var year = DateTime.Now.Year; for(var i = year; i> 2009; i-)
{
var j = @i - 1;
<div class="col-md-1 ">
@Html.ActionLink(i.ToString(), "MyCases/" + i)
</div>
}
控制器:
public ActionResult MyCases(int i) {
var cases = _db.case.Where(p => p.date.Value.Year == i)
.OrderByDescending(p => p.date).ToList();
return View(cases);
}