c# - 需要 Razor Pages 模型绑定 [BindProperty]?
问题描述
我的 .cs 文件中有以下代码:
[BindProperty]
public ApimSubscriptionRoot apimSubscriptions { get; set; }
...这允许我在我的 Razor 视图中访问对象的属性:
@Model.apimSubscriptions.someProperty
...但是将它定义为一个字段也适用于我能够在我的视图中显示对象的属性:
public ApimSubscriptionRoot apimSubscriptions;
背后的剃刀代码(控制器):
public async Task<IActionResult> OnGet()
{
(some code...)
apimSubscriptions = JsonConvert.DeserializeObject<ApimSubscriptionRoot>(contents);
return Page();
}
剃刀页面(查看):
@page
@model Subscriptions
@{
ViewData["Title"] = "Your subscriptions";
ViewData["ActivePage"] = ManageNavPages.Subscriptions;
}
<h4>@ViewData["Title"]</h4>
<div class="row">
<div class="col-md-12">
@if (Model.apimSubscriptions.value.Length == 0 || Model.apimSubscriptions == null)
任何关于为什么的解释将不胜感激。
解决方案
一个有点老的问题,但无论如何:BindPropertyAttribute
允许您访问在OnPost
方法视图中输入的值,即。在这种情况下,绑定代表从视图到模型的绑定。模型类中的所有公共属性 getter 和字段都可以在视图中访问,因为它们被认为只是 Razor 代码使用的对象实例。
BindPropertyAttribute
是必需的,因为在提交和调用表单时会创建一个新模型对象OnPost
,然后该属性指示 Razor Page 将表单中的相应值设置为匹配的属性。
推荐阅读
- python-3.x - 为 twitter 注册 webhook 的程序是什么?
- angular - 无法使用“选定”值预设选择 - 角度引导程序
- python - 由于换行,在 Python 中运行 Bash 命令导致不正确的结果
- ocaml - 如何通过 Esy 安装像 4.08.0+fp+flambda 这样的 OCaml 变体?
- spring - 无法使用传入消息调用 Kafka 侦听器方法
- sql-server - 从整个数据库中删除客户记录
- go - 如何反向读取 CSV 文件
- python - 无法操作 datetime.timedelta(0, 3600) 块值必须是 str,而不是 datetime.timedelta
- ios - 更多选项卡视图控制器选择器及其各自的视图控制器顶部的白条
- sql - 如何从给定的 json 中获取所有“url”元素