【发布时间】:2022-08-02 13:18:26
【问题描述】:
我在 Blazor Server 应用程序验证的某些时候遇到了困难。
有一个上下文模型“订单”。在 CRUD 操作期间,可以添加新客户或选择现有客户。
第一个 InputSelect 带有选项 New 或 Existing。根据它,有一个隐藏/显示逻辑在哪里显示新客户的输入文本,因此用户可以输入客户名称或显示输入选择,因此用户可以选择现有客户。
这种逻辑在那里运作良好。
问题是:当用户选择新客户并输入客户名称时,我想从当前 EditContext 中删除 CustomerId 模型字段。这意味着如果正在输入新客户,则无需验证现有客户。
但是,在创建 EditContext 字段的集合后,我没有找到任何方法或集合来操作它。
所以,请,如果有人有一些解决方案,我很感激。
private class Order
{
[StringLength(maximumLength: 200, MinimumLength = 3,ErrorMessage =\"Enter the customer name\")]
[Required(ErrorMessage =\"Enter the customer name\") ]
[Display(Name = \"Customer Name\")]
public string CustomerName { get; set; } = \"\";
[Required(ErrorMessage =\"Please select the option\")]
[Display(Name = \"Existing Customer\")]
public Int16 ExistingCustomerId { get; set; }
[Required(ErrorMessage =\"Please select the customer\")]
[Display(Name = \"Customer\")]
public int? CustomerId { get; set; }
}
-
EditContext可以解决这个问题。您可以更改上下文。只需 capture the reference 为EditContext(<EditContext @ref=\"myEditContext\" ...) 并设置新的上下文。 -
这几乎是我需要的。实际上我不想更改为新的上下文,否则我需要有 2 个上下文,唯一的区别是一个字段。我实际上想使用现有的上下文,但只是手动从中删除一些字段属性。谢谢