2017-08-24 12 views
1

私は、パーサービューとレイザーページを利用しようとしています。私は周りを探索し、複数のことを試しましたが、解決策のどれも私のために働いていませんでした。私のエントリ/ index.cshtml.cs(コードビハインド)ページプロパティをパーシャルビューに正しく渡すにはどうすればよいですか?

public class IndexModel : PageModel 
     { 
      private readonly CrewLogContext _context; 

      public IndexModel(CrewLogContext context) 
      { 
       _context = context; 
      } 
      [BindProperty] 
      public IList<EntryLog> EntryLog { get;set; } 
      public TeamMember TeamMember { get; set; } 
    public async Task OnGetAsync(string id) 
      { 
       TeamMember = await _context.TeamMember.Include(x => x.Position).Include(p => p.Shift).FirstOrDefaultAsync(p => p.Id == id); 


       EntryLog = await _context.EntryLog.Where(x => x.TeamMemberId== id) 
        .Include(e => e.Reason) 
        .Include(e => e.ReasonType).ToListAsync(); 
      } 

だから私はTeamMemberプロパティを満たしていると私はそれが値を持って知って

on the index.cshtml TeamMemberの部分表示を使用しようとしています。

@Html.Partial("_TeamMember", Model.TeamMember) 

部分ビュー_TeamMember.cshtmlです。

@page 
    @model WebCrewLog.Models.TeamMember 

    @{ 
    } 
    <h2></h2> 
    <div class="panel panel-default"> 
     <div class="panel-body"> 

      <div class="row"> 
       <div class="col-lg-2"> 
    //Here is where I'm getting an error. 
        <img class="img-circle" src="@Url.Content(Model.PhotoID)" style="width: 80%; height: 80%" />    
       </div> 
       <div class="col-lg-5"> 
        <p> 
         <label class="text-success">@Html.DisplayFor(model => model.FirstName) @Html.DisplayFor(model => model.LastName)</label><br /> 
         Hired Date:<label class="text-success">@Html.DisplayFor(model => model.HireDate)</label><br /> 
        </p> 
       </div> 
       <div class="col-lge-5"> 
        <p> 
         Position:<label class="text-success">@Html.DisplayFor(model => model.Position.Name)</label><br /> 
         Shift: <label class="text-success">@Html.DisplayFor(model => model.Shift.Name)</label> 
        </p> 
       </div> 
      </div> 
      <div class="row"> 
      </div> 
     </div> 
    </div> 

ただし、Model.propertynameを含める場合のみエラーが発生します。私はラムダエクスプレスモデル=> model.propertynameを使用する場合、それは正常に動作します。

私はPHOTOIDフィールドに基づいてTeamMember画像を表示しようとしているが、私は部分的なビューを使用してはいけないが、代わりに、私は同じページ内のHTMLを入れて、それがうまく機能すれば、私は

NullReferenceException: Object reference not set to an instance of an object. 
    WebCrewLog.Pages._TeamMember_Page+<ExecuteAsync>d__0.MoveNext() in _TeamMember.cshtml 
    + 
        <img class="img-circle" src="@Url.Content(Model.PhotoID)" style="width: 80%; height: 80%" /> 

を取得します。

また、@ Html.Partial( "_ TeamMember"、新しいModels.TeamMember())のようなモデルの新しいインスタンスを作成しようとしましたが、これは機能しませんでした。

なぜlambda式で動作するのですか?私がModel.propertyNameを実行すると、それはなぜですか?私は何を間違えているのですか?

答えて

2

あなたは部分的にページディレクティブを使用していますパーシャルのディレクティブはありますか?私は自分自身をまだ使用していない。

+2

ありがとうございました。 @pageを削除しました。 – causita

+1

信じられないほど...公式の文書を全部見て、これについて何も見ることができませんでした。どのようにシンプル、絶対に重要な、まだ彼らはそれについて何も言わない。大変ありがとう@ddeamaral。 – shadowf

+0

問題ありません!喜んで助けて! – ddeamaral

関連する問題