2016-03-28 26 views
0

Amacım, eğitimdeki en son tarihi almak ve ona 1 yıl ekleyerek göstermektir. Ben kod fisrt ve ASP.net MVC kullanıyorum. İlk masamıza Kişi denir ve bir kişide tüm temelleri içerir. İkinci tabloya Oturum denir ve önceki tüm tarihleri ​​içerir ve birey eğitilmiştir. Sessions.cs Sistem kullanılarak bu gibi görünüyor; System.Collections.Generic kullanarak ; System.ComponentModel.DataAnnotations kullanarak ;Bir DateTime gösteriliyor + 1 yıl

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; } 
    } 
} 

benim görünümü için kod benim benim görünüme yeni iskele öğesi ekleme ve kişiler veritabanına bağlayarak oluşturulmuştur. Aşağıda gösterilmek için +1 yıla ihtiyacım var, ancak bu hatayı mevcut kodla alıyorum.

@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> 

Değişken, bir DateTime'dır. Razor MVC

+2

Ve hata ... bir ... ...:

yerine bu deneyin? –

+1

Yani, modelinizde başka bir özellik istiyorsanız, public DateTime trainingEnd => training.AddYears (1) 'gibi bir şey istiyor ve buna bir açıklama ekliyorsunuz? – DavidG

+0

System.Web.Mvc.dll dosyasında 'System.InvalidOperationException' türünde bir istisna oluştu ancak kullanıcı kodu 'da işlenmedi Ek bilgi: Şablonlar yalnızca alan erişimi, özellik erişimi, tek boyutlu dizi dizini ile kullanılabilir veya tek parametreli özel dizinleyici ifadeleri. – netgen

cevap

0

kullanıyorum Bu, DisplayFor()'un yalnızca ek kod eklenmemiş değişkenleri kullanmasıdır.

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

Bu işe yaramadı. İlk hatayı çok benzer bir şeyle hata. Ne olduğunu hatırlamıyorum. – 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

Cevabımda söylediğim gibi, 'DisplayFor()' kullanmayın. Kodunuzla ilgili başka sorunlarınız da varmış gibi görünüyor, bu yüzden işe yaramadı. – hvaughan3