У меня есть база данных, где у меня есть TimeStart
и TimeEnd
, поэтому я хочу получить только StudentName
значений, которым они тридцать дней, чтобы закончить. Таким образом, каждый StudentName
имеет TimeStart
и TimeEnd
Нельзя вычесть из DateTime
ViewModel:
public String StudentName { get; set; }
public List<SelectListItem> DurationDays { set; get; }
public int SelectedDurationDays { set; get; }
Модель:
[Key]
public int MyModelId { get; set; }
public String StudentName { get; set; }
public DateTime TimeStart{ get; set; }
public DateTime TimeEnd{ get; set; }
Так как вы можете видеть, я делаю SelectList
пункт, чтобы создать новый TimeStart
и TimeEnd
, вот моя логика:
Создать Получить:
public ActionResult Create()
{
var vm = new StudentViewModel
{
DurationDays = new List<SelectListItem>()
{
new SelectListItem {Value = "1", Text = "1 year"},
new SelectListItem {Value = "2", Text = "2 years"},
}};
return View(vm);
}
Создать сообщение
public async Task<ActionResult> Create([Bind(Include = "TimeStart,TimeEnd,StudentName,SelectedDurationDays")] StudentsViewModel model)
{
var endDate = DateTime.Now.AddYears(model.SelectedDurationDays);
var students = new Students
try
{
if (ModelState.IsValid)
{
StudentName = model.StudentName,
TimeStart = DateTime.Now,
TimeEnd = endDate
};
db.WebPagesList.Add(students);
db.SaveChanges();
return RedirectToAction("Index", "Student");
}
catch (Exception)
{
//exception Return
}
}
Индекс GET:
public async Task<ActionResult> Index(WebPages model)
{
var datesub = model.DomainExp.AddDays(-30);
var datetimened = db.StudentList.Where(x => x.StudentName== model.StudentNAme
&& x.TimeEnd<= datesub);
var StudentList = db.StudentList.Include(w => w.Student);
return View(await StudentList.ToListAsync());
}
Так что моя попытка проверить значения, которые собираются закончиться:
var datesub = model.TimeEnd.AddDays(-30);
var datetimened = db.MyModelList.Where(x => x.StudentName == model.StudentName && x.TimeEnd<= datesub);
Но Я получаю сообщение об ошибке:
The added or subtracted value results in an un-representable DateTime.
на этой линии:
var datesub = model.TimeEnd.AddDays(-30);
Что я делаю не так с моим запросом? Я только хочу, чтобы выбрать StudentName
, который находится рядом с TimeEnd
EDIT
Как комментарием @Stephen Muecke, мне нужно установить TimeEnd
в методе GET, как я могу сделать, если я не есть TimeEnd
перед публикацией (я создаю его, когда отправляю нового студента)?
Каково значение 'TimeEnd', когда вы вызываете этот запрос? –
'TimeEnd' назначается в зависимости от выбранных дней продолжительности, например, если я выбираю« 1 год »в моем представлении создания, мой« TimeEnd »- это« DateTime.Now »+« DateTime.Now.AddYears (1) », я пытаюсь чтобы получить StudentName, что 'TimeEnd' составляет около 30 дней в представлении списка индексов –
Я предлагаю вам отлаживать ваш код и проверять фактическое значение - его почти наверняка' 1/1/0001', как указал Дарин Димитров –