我第一次使用Razor Pages内联标记。将ViewModel传递给PartialView后遇到这个奇怪的问题。
当然,在我的父页面中,我将ViewModel传递给PartialView:
@{Html.RenderPartial("Partial/_RequestView", Model.NewRequest);}
public class IndexModel : PageModel
{
private readonly IActiveDirectoryClient _activeDirectoryClient;
private readonly ITravelClient _travelClient;
public IEnumerable<TravelRequestViewModel> Requests { get; set; }
在局部视图中,我没有在lambda表达式中引用模型的问题
@Html.HiddenFor(model => model.RequestId)
但是,当我尝试在内联的剃刀标记中引用模型时,Model为null。有任何想法吗?
<p>@Model.Name</p>
NewRequest属性在父页面中的OnGetAsync()方法中设置
public async Task<IActionResult> OnGetAsync()
{
NewRequest = BuildNewRequest();
if (NewRequest == null)
throw new NullReferenceException("Unable to build new travel request");
return await Task.FromResult(Page());
}
答案 0 :(得分:1)
回答了我自己的问题。必须删除@page指令才能使局部视图起作用并识别@Model。
有点奇怪VS 2017模板为部分视图添加了这个指令,我只能假设它是一个错误。