【问题标题】:Blazor EditForm 'model is a type, which is not valid in the given context'Blazor EditForm '模型是一种类型,在给定的上下文中无效'
【发布时间】:2026-01-24 15:20:05
【问题描述】:

我有这个简单的模型:

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; }
    }
}

这是我的 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" />
@code {
    private BlazorApp.Data.DataModel model = new BlazorApp.Data.DataModel();

    private void Handle()
    {

    }
}

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

【问题讨论】:

    标签: c# html asp.net .net blazor


    【解决方案1】:

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

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

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

    【讨论】:

    • 我对 @model 如何引用我的自定义 DataModel 类感到困惑?
    • 您定义了“私有 BlazorApp.Data.DataModel 模型”。这意味着变量“模型”是使用您的“数据模型”类构造的
    • @ 在这里是可选的。别管它。 Model="model"
    最近更新 更多