需要剃刀页模型绑定 [绑定属性]



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

最新更新