.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)
关于为什么会得到赞赏的任何解释。
答案 0 :(得分:1)
一个老问题,但是无论如何都可以通过:BindPropertyAttribute
来访问通过OnPost
方法在视图中输入的值,即。在这种情况下,绑定表示从视图到模型的绑定。视图中可访问模型类中的所有公共属性获取器和字段,因为它们仅被Razor代码使用的对象实例。
BindPropertyAttribute
是必需的,因为在提交表单并调用OnPost
时会创建一个新的模型对象,然后该属性指示Razor页面将表单中的相应值设置为匹配的值属性。