2017-08-24 64 views
1

我正在嘗試使用Razor Pages中的PartialViews。我四處搜索並嘗試了多種方法,但沒有一種解決方案適用於我。如何正確地將頁面屬性傳遞給partialview?

在我的參賽作品/ 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財產,我知道它的值。

對index.cshtml我想爲TeamMember使用部分視圖。

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

關於partialView _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,則會出現錯誤。如果我使用lambda express model => model.propertyname,它工作得很好。

我試圖顯示基於PHOTOID領域TeamMember圖像,但我得到

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它工作得很好,在同一頁。

我也嘗試創建模型的新實例,如@ Html.Partial(「_ TeamMember」,新的Models.TeamMember()),但這不起作用。

那麼,爲什麼它與lambda表達式一起工作,但是如果我使用Model.propertyName它不會呢?我究竟做錯了什麼?

回答

2

難道這與他的事實,你的部分是使用頁面指令?是否有部分指令?我還沒有使用過。

+2

謝謝。刪除@page做到了。 – causita

+1

令人難以置信...看着各地的官方文件,看不到任何關於這個。這是多麼簡單,絕對至關重要,但他們並沒有說這些。非常感謝@ddeamaral。 – shadowf

+0

沒問題!很高興有幫助! – ddeamaral

相關問題