这个Blazor错误消息是什么意思?

这个Blazor错误消息是什么意思?,blazor,Blazor,如果我告诉你“你需要太阳镜或雨伞,但不是两者都需要。”你将不知道是否在下雨。运行Blazor web应用程序时,我得到 EditForm需要一个模型参数或EditContext参数,但不能同时需要这两个参数 我的代码有: <EditForm Model="@order" OnSubmit="OnSubmit"> 据我所知,我只使用了一个模型参数。我认为应该禁止在错误信息中使用“或”。我的猜测是有些东西自动生成了EditContext。有人

如果我告诉你“你需要太阳镜或雨伞,但不是两者都需要。”你将不知道是否在下雨。运行Blazor web应用程序时,我得到

EditForm需要一个模型参数或EditContext参数,但不能同时需要这两个参数

我的代码有:

<EditForm Model="@order" OnSubmit="OnSubmit">


据我所知,我只使用了一个模型参数。我认为应该禁止在错误信息中使用“或”。我的猜测是有些东西自动生成了EditContext。有人知道去哪里找吗?

您是否为变量
@order
创建了一个实例?如果定义了
@order
,但将其保留为空,则会收到此错误消息

如果是这种情况,它与公认的笨拙错误消息有关,因为“EditForm需要模型参数或EditContext参数”,但您没有提供这两个参数

见:

将模型分配给表单时,请确认模型类型已实例化


您是否为变量
@order
创建了一个实例?如果定义了
@order
,但将其保留为空,则会收到此错误消息

如果是这种情况,它与公认的笨拙错误消息有关,因为“EditForm需要模型参数或EditContext参数”,但您没有提供这两个参数

见:

将模型分配给表单时,请确认模型类型已实例化


要为Eric的回答添加更多细节,生成违规消息的
EditForm
代码的相关部分如下:

private bool\u hassetteditcontextly;
[参数]公共对象?模型{get;set;}
[参数]
公共环境?编辑上下文
{
get=>\u editContext;
设置
{
_editContext=值;
_hasSetEditContextExplicitly=value!=null;
}
}
以及重写的
OnParametersSet
,如果未显式设置,则尝试获取
Editcontext
。第一个
else if
抛出了错误,因此
Model
必须为空

protectedoverride void OnParametersSet()
{
if(_hasSetEditContextExplicitly&&Model!=null)
{
抛出新的InvalidOperationException($“{nameof(EditForm)}需要一个{nameof(Model)}”+
$”参数,或{nameof(EditContext)}参数,但不能同时使用这两个参数。“);
}
else如果(!\u hassetteditContextExplicitly&&Model==null)
{
抛出新的InvalidOperationException($“{nameof(EditForm)}需要一个{nameof(Model)}”+
$“参数或{nameof(EditContext)}参数,请提供其中一个。”);
}
//如果您正在使用OnSubmit,手动触发验证将成为您的责任
//(例如,您可以在UI中显示“挂起”状态)
//系统以隐式方式触发第二次验证,所以不要将其与简化的
//OnValidSubmit/OnInvalidSubmit处理程序。
if(OnSubmit.HasDelegate&(OnValidSubmit.HasDelegate | | OnInvalidSubmit.HasDelegate))
{
向提供{nameof(OnSubmit)}参数时引发新的InvalidOperationException($)+
$“{nameof(EditForm)},不提供{nameof(OnValidSubmit)}或{nameof(OnInvalidSubmit)}”;
}
//如果我们还没有,或者他们正在提供
//可能是新的EditContext,或者如果他们提供不同的模型
if(Model!=null&&Model!=\u editContext?.Model)
{
_editContext=新的editContext(模型!);
}
}

完整的
EditForm
代码是

为了给Eric的答案添加更多细节,生成违规信息的
EditForm
代码的相关部分如下:

private bool\u hassetteditcontextly;
[参数]公共对象?模型{get;set;}
[参数]
公共环境?编辑上下文
{
get=>\u editContext;
设置
{
_editContext=值;
_hasSetEditContextExplicitly=value!=null;
}
}
以及重写的
OnParametersSet
,如果未显式设置,则尝试获取
Editcontext
。第一个
else if
抛出了错误,因此
Model
必须为空

protectedoverride void OnParametersSet()
{
if(_hasSetEditContextExplicitly&&Model!=null)
{
抛出新的InvalidOperationException($“{nameof(EditForm)}需要一个{nameof(Model)}”+
$”参数,或{nameof(EditContext)}参数,但不能同时使用这两个参数。“);
}
else如果(!\u hassetteditContextExplicitly&&Model==null)
{
抛出新的InvalidOperationException($“{nameof(EditForm)}需要一个{nameof(Model)}”+
$“参数或{nameof(EditContext)}参数,请提供其中一个。”);
}
//如果您正在使用OnSubmit,手动触发验证将成为您的责任
//(例如,您可以在UI中显示“挂起”状态)
//系统以隐式方式触发第二次验证,所以不要将其与简化的
//OnValidSubmit/OnInvalidSubmit处理程序。
if(OnSubmit.HasDelegate&(OnValidSubmit.HasDelegate | | OnInvalidSubmit.HasDelegate))
{
向提供{nameof(OnSubmit)}参数时引发新的InvalidOperationException($)+
$“{nameof(EditForm)},不提供