首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >几个组件上Blazor表单的绑定和验证

几个组件上Blazor表单的绑定和验证
EN

Stack Overflow用户
提问于 2021-06-26 21:42:55
回答 2查看 597关注 0票数 0

我正在尝试将Blazor表单分离为多个组件。单一版本处理验证和绑定。如何在单独的组件上进行验证和绑定?我是否使用级联参数、非级联参数、级联EditForm等?有很多关于巴兹尔,但挣扎着把这一切放在一起为这个案子。

单人和地址组件:

代码语言:javascript
复制
<EditForm Model=@FormData>
    <DataAnnotationsValidator />
    <ValidationSummary />
    <InputText @bind-Value=FormData.FullName />
    <InputText @bind-Value=FormData.Address1 />
    <InputText @bind-Value=FormData.Address2 />
    <input type="submit" value="Submit" class="btn btn-primary" />
</EditForm>

@code {
    PersonFullDataModel FormData = new PersonFullDataModel();
}

单一型号:

代码语言:javascript
复制
public class PersonFullDataModel
{
    [Required]
    public string FullName { get; set; }
    [Required]
    public string Address1 { get; set; }
    public string Address2 { get; set; }
}

单独的人员部分:

代码语言:javascript
复制
<EditForm Model=@FormData>
    <DataAnnotationsValidator />
    <ValidationSummary />
    <InputText @bind-Value=FormData.FullName />
    <ComponentAddress/>
    <input type="submit" value="Submit" class="btn btn-primary" />
</EditForm>

@code {
    PersonDataModel FormData = new PersonDataModel();
} 

独立地址组件(ComponentAddress):

代码语言:javascript
复制
<InputText @bind-Value=FormData.Address1 />
<InputText @bind-Value=FormData.Address2 />

@code {
    AddressDataModel FormData = new AddressDataModel(); // this data does not go anywhere
}

人物模型:

代码语言:javascript
复制
public class PersonDataModel
{
    [Required]
    public string FullName { get; set; }
    public AddressDataModel Address { get; set; }
}

地址模式:

代码语言:javascript
复制
public class AddressDataModel
{
    [Required]
    public string Address1 { get; set; }
    public string Address2 { get; set; }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-27 08:15:42

你在这里有两个选择:

我建议使用fluent验证。更多的最初的挣扎,但复杂的验证是可能的(并工作良好的blazor客户端)。

票数 0
EN

Stack Overflow用户

发布于 2021-06-27 07:27:54

应该更改PersonFullDataModel类,使其包含两个属性:PersonDataModelAddressDataModel。它们必须在父组件中实例化。

ComponentAddress中,您应该创建一个参数:

代码语言:javascript
复制
[Parameter]
public PersonFullDataModel PersonFullData { get; set; }

在address组件中,将绑定更改为PersonFullData.AddressData.Address1PersonFullData.AddressData.Address2

由于PersonFullData参数是通过引用从主组件传递给单个组件的,所以它在两边都是可用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68146445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档