【问题标题】:How to make a component that have an EditForm and encapsulate the form and the validation inside?如何制作一个具有 EditForm 的组件并将表单和验证封装在里面?
【发布时间】:2020-03-18 12:55:38
【问题描述】:

我想制作一个具有EditForm 的组件并将表单和验证封装在组件内部。

我想在我的应用程序的任何地方重用这个组件并使用任何按钮提交它。

如何通过外部按钮提交EditForm?

观察:我已经搜索过其他答案,例如 this one,但标记为已接受的答案并未回答问题,这就是我提出这个新问题的原因。

【问题讨论】:

  • IMO 在表单外有一个提交按钮不是一个好主意...
  • 为什么要创建一个这个可重用的组件?听起来您正在重塑 EditForm 本身
  • 只需创建包含EditForm 的表单即可。 EditContext 是 Cascadind 值。
  • 并在页面级别设置EditForm
  • 为什么不呢?您的 OnValidSubmit 处理程序可以设置可重用表单组件的绑定参数以触发提交代码。或者您可以通过调用方法获取组件的引用。 docs.microsoft.com/en-us/aspnet/core/blazor/…

标签: c# blazor asp.net-blazor


【解决方案1】:

不要在组件中包含EditForm,而是创建一个不包含EditForm 的组件并在OnValidSubmit 上调用组件的方法

<EditForm OnValidSubmit="HandleValidSubmit">
    <FormContentComponent @ref="_formContent" />
    <button type="submit">submit</button>
</EditForm>
@code {
    private FormContentComponent _formContent;

    private void HandleValidSubmit()
    {
        _formContent.HandleValidSubmit();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-26
    • 2021-02-23
    • 2020-07-27
    • 2018-07-26
    • 2020-06-16
    • 1970-01-01
    • 2020-01-25
    • 2021-04-28
    相关资源
    最近更新 更多