1

我正在尝试将 PartialViews 与 Razor Pages 一起使用。我四处搜索并尝试了多种方法,但没有一个解决方案对我有用。

在我的 Entries/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", new Models.TeamMember()) 但这不起作用。

那么为什么它可以与 lambda 表达式一起使用,但如果我使用 Model.propertyName 它却不行呢?我究竟做错了什么?

4

1 回答 1

2

这可能与您的部分使用页面指令有关吗?是否有针对部分的指令?我自己还没有开始使用。

于 2017-08-25T02:55:38.797 回答