2016-03-28 10 views
0

私の目標はトレーニングの最新の日付を取得し、それに1年追加して表示することです。私はコードfisrtとASP.net MVCを使用しています。私の最初のテーブルはPersonと呼ばれ、人に基本的なすべてが含まれています。 2番目の表はSessionと呼ばれ、前の日付がすべて含まれ、個人は訓練されています。 Sessions.csは次のようになります using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations;DateTime + 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です。私は剃刀MVCを使用しています

+2

そしてエラーですが... ... ...? –

+1

あなたのモデルには、 'public DateTime trainingEnd => training.AddYears(1)'のような別のプロパティを追加して、注釈を追加するだけです。 – DavidG

+0

System.Web.Mvc.dllで 'System.InvalidOperationException'型の例外が発生しましたが、ユーザーコードで処理されませんでした。 追加情報:テンプレートは、フィールドアクセス、プロパティアクセス、一次元配列インデックス、または単一パラメータのカスタムインデクサ式。 – 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

関連する問題