我的.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 页面将表单中的相应值设置为匹配属性。