C# 是否需要Razor页面模型绑定[BindProperty]?

C# 是否需要Razor页面模型绑定[BindProperty]?,c#,razor,C#,Razor,我的.cs文件中有以下代码: [BindProperty] public ApimSubscriptionRoot apimSubscriptions { get; set; } …允许我在Razor视图中访问对象的属性,如下所示: @Model.apimSubscriptions.someProperty …但是,将其定义为字段也可以在视图中显示对象的属性: public ApimSubscriptionRoot apimSubscriptions; Razor代码隐藏(控制器): 公共

我的.cs文件中有以下代码:

[BindProperty]
public ApimSubscriptionRoot apimSubscriptions { get; set; }
…允许我在Razor视图中访问对象的属性,如下所示:

@Model.apimSubscriptions.someProperty
…但是,将其定义为字段也可以在视图中显示对象的属性:

public ApimSubscriptionRoot apimSubscriptions;
Razor代码隐藏(控制器):

公共异步任务OnGet()
{
(一些代码…)
apimSubscriptions=JsonConvert.DeserializeObject(内容);
返回页();
}
剃须刀页面(视图):

@page
@模型订阅
@{
ViewData[“Title”]=“您的订阅”;
ViewData[“ActivePage”]=ManageNavPages.Subscriptions;
}
@ViewData[“标题”]
@if(Model.apimSubscriptions.value.Length==0 | | Model.apimSubscriptions==null)

请解释一下原因。

这是一个有点老的问题,但还是有一个问题:
BindPropertyAttribute
允许您访问在
OnPost
方法中的视图中输入的值,即本例中的绑定代表从视图到模型的绑定。模型类中的所有公共属性getter和字段都可以在视图中访问,因为它们被认为只是Razor代码使用的对象实例


BindPropertyAttribute
是必需的,因为提交表单时会创建一个新的模型对象,并调用
OnPost
,然后该属性会指示Razor页面将表单中的相应值设置为匹配属性。

有点老问题,但无论如何,
BindPropertyAttribute
允许您访问在
OnPost
方法中的视图中输入的值,即,本例中的绑定表示从视图到模型的绑定。模型类中的所有公共属性getter和字段都可以在视图中访问,因为它们被认为只是Razor代码使用的对象实例


BindPropertyAttribute
是必需的,因为提交表单时会创建一个新的模型对象,并调用
OnPost
,然后该属性会指示Razor页面将表单中的相应值设置为匹配的属性。

能否提供更多详细信息和示例代码。特别是视图和控制器的开头,以及将其定义为字段的位置。更新帖子。这是一个剃须刀页面,因此没有“控制器”本身。我认为您在问题中称为控制器的是一个名为“订阅”的类。您能提供更多详细信息和示例代码吗。特别是视图和控制器的开头,以及将其定义为字段的位置。更新帖子。这是一个剃须刀页面,因此没有“控制器”本身。我认为您在问题中称为控制器的是一个名为“订阅”的类?表单需要设置方法属性,如
method=“post”
,以便绑定工作。表单需要设置方法属性,如
method=“post”
用于绑定工作。
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)