我有一个静态渲染的
EditForm
,它负责提交模型,以便我可以将其添加到我的数据库中。
@page "/Test"
@using Domain.Entities
<h3>Test</h3>
<EditForm Model="@Model" OnSubmit="@HandleSubmitted" FormName="CreateModel" Enhance>
<InputText @bind-Value="@Model.Name"></InputText>
<button type="submit" > Submit</button>
</EditForm>
@code {
[SupplyParameterFromForm]
private TestModel Model { get; set; } = new();
protected override void OnInitialized()
{
Console.WriteLine($"Initialized: {Model}");
}
private void HandleSubmitted(EditContext obj)
{
Console.WriteLine($"Submitted: {Model}");
}
}
public record TestModel
{
public Guid Id { get; set; } = Guid.NewGuid();
public string Name { get; set; } = "";
}
这是日志输出(刷新页面、编辑名称、提交表单):
Initialized: TestModel { Id = 9e8e339a-cccc-499e-9f1e-76883657530d, Name = }
Initialized: TestModel { Id = 00000000-0000-0000-0000-000000000000, Name = New Name }
Submitted: TestModel { Id = 00000000-0000-0000-0000-000000000000, Name = New Name }
我希望提交表单时 Id (9e8...) 不会重置。我不确定我是否遗漏了一些概念或者我是否没有正确设置表单。我想找到一种正确的方法来提交带有有效 ID 的表单。
我之前尝试将 Id 添加为可编辑字段,这似乎解决了问题 - 它不再提交空的 guid。但是,我不想在这个阶段向最终用户公开 Id。我不认为拥有该 Id 输入字段并将其设置为隐藏是实际的方法吗?
据我了解,只想提交模型的一部分。您可以尝试创建一个“部分模型”,其中仅包含要更改的字段,然后在初始化时获取部分模型值。您可以尝试以下操作:
<EditForm Model="@onlyName" OnSubmit="@HandleSubmitted" FormName="CreateModel" Enhance>
<InputText @bind-Value="@onlyName"></InputText>
<button type="submit"> Submit</button>
</EditForm>
@code {
[SupplyParameterFromForm]
private string? onlyName { get; set; } = "";
private TestModel Model { get; set; } = new();
protected override void OnInitialized()
{
Model.Name = onlyName;
Console.WriteLine($"Initialized: {Model}");
}
private void HandleSubmitted(EditContext obj)
{
Console.WriteLine($"Submitted: {Model}");
}
}