【问题标题】:Razor Pages Partial View: Model is not definedRazor 页面部分视图:模型未定义
【发布时间】:2019-05-30 10:53:08
【问题描述】:

TLDR:问题是,当我尝试从模型(下面代码的第 8 行)获取 ID 时看到以下错误:

System.NullReferenceException:对象引用未设置为对象的实例。

详情:

我想让我的部分 HTML 可重用。有一个名为“InfoBox”的大 div,其中包含一些信息,这些信息放置在我网站上的多个位置。我决定创建部分剃刀页面。这是我的做法:

_TextBoxInfoPartial.cshtml.cs:

public class _TextBoxInfoPartialModel : PageModel
{
    [BindProperty]
    public string ID { get; set; }

    public IActionResult OnGet()
    {
        ID = ""; //default

        return Page();
    }
}

_TextBoxInfoPartial.cshtml:

@page
@model Definicje.Pages.Shared._TextBoxInfoPartialModel

<button type="button" class="visibility-toggler" visibility-toggler="#hint-math@(Model.ID)">Wstaw wzór</button>
<div id="hint-math@(Model.ID)" class="hintbox">
    some text
</div>

要将部分放在另一个 cshtml 文件中,我使用以下行:

@await Html.PartialAsync("_TextBoxInfoPartial", new _TextBoxInfoPartialModel { ID = g.ID + "" })

我不明白。我为 Partial 指定了 Model,为什么它没有定义呢?

【问题讨论】:

    标签: asp.net asp.net-core razor-pages


    【解决方案1】:

    对于局部视图,删除@page 指令。

    @model Definicje.Pages.Shared._TextBoxInfoPartialModel
    
    <button type="button" class="visibility-toggler" 
                      visibility-toggler="#hint-math@(Model.ID)">Wstaw wzór</button>
    <div id="hint-math@(Model.ID)" class="hintbox">
        some text
    </div>
    

    现在Model 将是您从另一个视图传递的_TextBoxInfoPartialModel 对象。

    当您将 @page 指令添加到视图文件时,它的行为开始有所不同,更像是一种操作方法 - 您可以通过 http 请求访问它。

    另一个观察是,如果您的文件名以_ 前缀开头,则上述路由功能将不起作用。不能通过 Http 请求直接访问。

    所以对于你的局部视图,不要使用@page 指令

    【讨论】:

      猜你喜欢
      • 2018-12-20
      • 2019-11-15
      • 2019-09-25
      • 2019-06-28
      • 2019-01-22
      • 1970-01-01
      • 2018-01-26
      • 2018-06-05
      • 2017-02-16
      相关资源
      最近更新 更多