1

我第一次使用 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)

但是,当我尝试在内联剃刀标记中引用模型时,模型为空。有任何想法吗?

<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());
    }
4

1 回答 1

2

回答了我自己的问题。必须删除 @page 指令才能使局部视图工作并识别 @Model。

有点奇怪的是 VS 2017 模板为部分视图添加了这个指令,我只能假设这是一个错误。

于 2018-01-16T16:45:26.203 回答