Blazor EditForm '模型是一种类型,在给定的上下文中无效'

Nat*_*han 2 .net html c# asp.net blazor

我有这个简单的模型:

using System.ComponentModel.DataAnnotations;

namespace BlazorApp.Data
{
    public class DataModel
    {

        [Required]
        [Range(1, 500, ErrorMessage = "Width needs to be above 1m and below 500m")]
        public int Width { get; set; }

        [Required]
        [Range(1, 500, ErrorMessage = "Length needs to be above 1m and below 500m")]
        public int Length { get; set; }

        [Required]
        [Range(1, 500, ErrorMessage = "Height needs to be above 1m and below 500m")]
        public int Height { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的 Razor 文件,我正在尝试将模型用于:

<EditForm Model="@BlazorApp.Data.DataModel" OnValidSubmit="@Handle"> // ERROR OCCURS HERE 
<DataAnnotationsValidator />
<ValidationSummary />

<InputText id="width" @bind-Value="BlazorApp.Data.DataModel.Width" />
<InputText id="length" @bind-Value="BlazorApp.Data.DataModel.Length" />
<InputText id="height" @bind-Value="BlazorApp.Data.DataModel.Height" />
Run Code Online (Sandbox Code Playgroud)
@code {
    private BlazorApp.Data.DataModel model = new BlazorApp.Data.DataModel();

    private void Handle()
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

错误发生Model="@BlazorApp.Data.DataModel"并且显然在每个表单的“@bind-values”中。为什么会这样,我不认为 namspace Data 是一种类型?

Bra*_*rad 6

Model="@BlazorApp.Data.DataModel"应该是Model="@model"

您需要引用变量 ( model)的名称,也就是保存表单所有数据的变量,而不是其类型的名称。

InputText的也应该有类似的东西@bind-Value="model.Height"。同样,他们需要引用特定的变量,而不是数据类型中的字段。