我正在尝试使用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它不会呢?我究竟做错了什么?
谢谢。删除@page做到了。 – causita
令人难以置信...看着各地的官方文件,看不到任何关于这个。这是多么简单,绝对至关重要,但他们并没有说这些。非常感谢@ddeamaral。 – shadowf
没问题!很高兴有帮助! – ddeamaral