2016-03-28 2 views
0

Моя цель - получить последнюю дату обучения и показать ее с добавлением 1 года. Я использую код fisrt и ASP.net MVC. Моя первая таблица называется Person и содержит все основные, если на человека. Вторая таблица называется Session, и она содержит все предыдущие даты, и человек прошел обучение. Session.cs выглядит так: using System; с использованием System.Collections.Generic; с использованием System.ComponentModel.DataAnnotations;Отображение датыTime + 1 год

namespace CleryAct.Models 
{ 
    public class Session 
    { 

     [Key] 
     public int ID { get; set; } 
     [StringLength(9, MinimumLength = 9, ErrorMessage = "Rocket Number must be longer than 9 characters.")] 
     public string rockets { get; set; } 
     [DataType(DataType.Date)] 
     [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] 
     public DateTime training { get; set; } 

     public virtual Person Person { get; set; } 
    } 
} 

Код для моего зрения был создан мое добавление нового элемента строительных лесов на мой взгляд, и связать его с базой данных лиц. Мне нужно +1 год для отображения ниже, но я получаю эту ошибку с текущим кодом.

@foreach (var item in Model) { 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.csa) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.lname) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.fname) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.rockets) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.email) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Sessions.ElementAtOrDefault(0).training.AddYears(1))* 
     </td> 
     <td> 

Эта переменная является DateTime. Я использую Razor MVC

+2

И ошибка ... ... ...? –

+1

Вы имеете в виду, что хотите просто получить другое свойство на своей модели, например, «публичное обучение DateTime trainingEnd => training.AddYears (1)» и добавить к нему аннотацию? – DavidG

+0

Исключение типа «System.InvalidOperationException» произошло в System.Web.Mvc.dll, но не было обработано в коде пользователя Дополнительная информация: Шаблоны могут использоваться только с доступом к полю, доступом к ресурсам, индексу единичного массива или однопараметрические выражения пользовательского индексатора. – netgen

ответ

0

Это потому, что DisplayFor() нравится только переменные без добавления дополнительного кода.

Попробуйте вместо этого:

<td> 
    @item.Sessions.ElementAtOrDefault(0).training.AddYears(1) 
</td> 
+0

Это не сработало. Это ошибка с чем-то очень похожим на первую ошибку. Я не помню, что это было. – netgen

0
@{ 
       if (item.Sessions.Count > 0) 
       { 
        int year = item.Sessions.ElementAt(0).training.Year; 
        ++year; 
        <div>@item.Sessions.ElementAt(0).training.Month.ToString("D2")[email protected](0).training.Day.ToString("D2")[email protected]()</div> 

       } 
      } 
+0

Как я уже сказал в своем ответе, просто не используйте 'DisplayFor()'. Похоже, у вас были и другие проблемы с вашим кодом, поэтому он не работает. – hvaughan3

Смежные вопросы