asp.net - Razor 页面部分视图:模型未定义
问题描述
TLDR:问题是,当我尝试从 Model 获取 ID 时看到以下错误(下面代码的第 8 行):
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 指定模型,为什么它没有定义呢?
解决方案
对于局部视图,删除@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
指令
推荐阅读
- common-lisp - 在 Common Lisp 中声明约束/多态类型
- scala - 在火花中选择每行的所有非空列名
- python - pytorch 模型中的参数如何不是叶子并且在计算图中?
- dijkstra - 在有向加权图中找到最短循环
- javascript - 在 JavaScript 中剥离部分字符串时哪种方式更快
- ios - 无法识别的选择器发送到实例 obj c
- python - Python3.8.1 已安装但编译器找不到
- java - 缺少组织 (-O=name) 的 CERTS 是否会导致浏览器不信任 java keytool CERT?
- odoo - 自定义字体颜色字段 Odoo
- reactjs - 如何使用 GCP 部署 React 生产构建?