剃刀页面局部视图:模型未定义

时间:2019-01-03 20:20:54

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

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

  

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

详细信息:

我想使HTML的一部分可重用。有一个名为“ InfoBox”的大型div,其中包含一些信息,这些信息位于我的网站上的多个位置。我决定创建Partial Razor Page。这是我的方法:

select

if select(2, func()) == 2 then ... end

print(select(1, func()) -- prints 1 2 3
print(select(2, func()) -- prints 2 3
print(select(3, func()) -- prints 3
print(select('#', func()) -- prints 3, the total number of arguments received

_TextBoxInfoPartial.cshtml.cs

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

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

        return Page();
    }
}

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

_TextBoxInfoPartial.cshtml

我不明白。我正在为“局部模型”指定模型,为什么然后未定义它?

1 个答案:

答案 0 :(得分: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指令