Прежде всего Я бы никогда не разделил 2 метода для месяца и года, поскольку они абсолютно одинаковы, если вы измените сигнатуру метода, включив, например, дату from
и to
.
Имея это в виду, вы можете сделать что-то вроде:
public ActionResult ShowProgramsBetweenDates(DateTime? from, DateTime? to)
{
if(from.HasValue && to.HasValue) {
return View(GetProgramsBetweenDates(from.Value, to.Value));
}
return View(wholeProgramList);
}
public IEnumerable<ProgramSchedule> GetProgramsBetweenDates(DateTime from, DateTime to)
{
return from prog in wholeProgramList
where prog.ScheduledDate >= from && prog.ScheduledDate <= to
select prog;
}
и ваши кнопки будут выглядеть примерно так:
@using(Html.BeginForm("ShowProgramsBetweenDates", "ProgramTetecast"))
{
<input type="button" value="Show March Programs"
data-from="01-03-2012" data-to="31-03-2012" />
<input type="button" value="Show 2012 Programs"
data-from="01-01-2012" data-to="31-12-2012" />
<input type="hidden" id="from" value="" />
<input type="hidden" id="to" value="" />
}
и простой JQuery, чтобы помочь
$('form input[type="button"]').on('click', function() { // for all buttons in the form
$('#from').val($(this).attr('data-from')); // set #from with date-from
$('#to').val($(this).attr('data-to')); // set #to with date-to
$(this).closest('form').submit(); // submit the form
});
Как правило , и, чтобы помочь вам в течение всего срока службы приложения, вы никогда не должны иметь более одного значения для даты, нет необходимости вразделите даты в «таблице», так как вы можете извлечь все, что вам нужно, например, из поля Date
, ваш класс может быть просто как
public class ProgramSchedule
{
public ProgramSchedule() {} // Always add an empty constructor
public int ProgramID { get; set; }
public string ProgramName { get; set; }
public int ScheduledDate { get; set; }
}
, поэтому ваш DataObject будет выглядеть примерно так::
List<ProgramSchedule> wholeProgramList = new List<ProgramSchedule>()
{
new ProgramSchedule
{
ProgramID = 1, ProgramName = "2012-March-15",
ScheduledDate = new DateTime(2012, 3, 15)
},
new ProgramSchedule
{
ProgramID = 2, ProgramName = "2012-March-16",
ScheduledDate = new DateTime(2012, 3, 16)
},
new ProgramSchedule
{
ProgramID = 3, ProgramName = "2012-March-11",
ScheduledDate = new DateTime(2012, 3, 11)
},
new ProgramSchedule
{
ProgramID = 4, ProgramName = "2012-January-5",
ScheduledDate = new DateTime(2012, 1, 5)
},
};
и в вашем представлении вы просто делаете:
@foreach (var item in Model) {
<tr>
<td style="border:1px solid Teal">
@Html.DisplayFor(modelItem => item.ProgramID)
</td>
<td style="border:1px solid Teal">
@Html.DisplayFor(modelItem => item.ProgramName)
</td>
<td style="border:1px solid Teal">
@Html.DisplayFor(modelItem => item.ScheduledDate)
</td>
<td style="border:1px solid Teal">
@item.ScheduledDate.toString("MMM")
</td>
<td style="border:1px solid Teal">
@item.ScheduledDate.ToString("yyyy")
</td>
</tr>
}