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