我使用的是.NET 8.0

当我提交表单并将结果打印到控制台时,它会给出表单的默认值.在本例中,它们中的每一个都为空.

以下是Form和Blazor代码块的代码.

根据我所看到的,我正在创建类的一个新实例,将每个属性绑定到表单中的类,然后转换为JSON并打印.我遗漏了什么?

<EditForm Model="@addressToBeCorrected" FormName="addressForm" OnValidSubmit="HandleValidSubmit">
    <DataAnnotationsValidator />

    <div class="form-group col-md-4">
        <label for="Number">Number</label>
        <InputText id="Number" class="form-control" @bind-Value="@addressToBeCorrected.Number" />
    </div>

    <div class="form-group col-md-4">
        <label for="Street">Street</label>
        <InputText id="Street" class="form-control" @bind-Value="@addressToBeCorrected.Street" />
    </div>

    <div class="form-group col-md-4">
        <label for="Unit">Unit</label>
        <InputText id="Unit" class="form-control" @bind-Value="@addressToBeCorrected.Unit" />
    </div>

    <div class="form-group col-md-4">
        <label for="City">City</label>
        <InputText id="City" class="form-control" @bind-Value="@addressToBeCorrected.City" />
    </div>

    <div class="form-group col-md-4">
        <label for="Postcode">Postcode</label>
        <InputText id="Postcode" class="form-control" @bind-Value="@addressToBeCorrected.Postcode" />
    </div>

    <div class="form-group col-md-4">
        <label for="Region">Region</label>
        <InputText id="Region" class="form-control" @bind-Value="@addressToBeCorrected.Region" />
    </div>

    <button type="submit" class="btn btn-primary">Submit</button>
</EditForm>

@code {
    private Models.InputAddress addressToBeCorrected = new Models.InputAddress();

    private async Task HandleValidSubmit()
    {
        Console.WriteLine(addressToBeCorrected.Number);

        // convert the InputAddress object to a JSON string
        string json = JsonSerializer.Serialize(addressToBeCorrected);

        Console.WriteLine(json);
        // send the JSON string to the server
    }
}

以下是InputAddress类的代码:


public class InputAddress

{
    public string? Number { get; set; }
    public string? Street { get; set; }
    public string? Unit { get; set; }
    public string? City { get; set; }
    public string? Postcode { get; set; }
    public string? Region { get; set; }
}

感谢下面的 comments 者,我遇到的问题是因为我没有使用@rendermode设置页面的互动性.这件事就这样解决了.

推荐答案

你可能只需要@rendermode InteractiveServer号线就可以了

@page "/address"
@using System.Text.Json
@rendermode InteractiveServer

... the EditForm and the rest

Csharp相关问答推荐

利用.NET 8中的AddStandardResilienceDeliveries和AddStandardHedgingDeliveries实现Resiliency

有没有方法让ASP.NET Core模型绑定器使用私有设置器来设置属性?

我可以 suppress 规则CS 9035一次吗?

在LINQ Where子句中使用新的DateTime

MAUI查询参数单一字符串项将不起作用

Blazor Foreach仅渲染最后一种 colored颜色

如何定义EFCore中的多个穿透

使用Audit.EntityFramework,我如何将外键的值设置为相关实体上的属性?

Blazor WebApp:原始异常:AADSTS700025:客户端是公共的,因此既不应显示客户端,也不应显示客户端

尽管保证密钥不同,但已添加相同密钥的项(&Q;)

为基本审计设置Audit.EntityFramework.Core

如何在C#中将方法/线程启动传递给基本构造函数

C#普罗米修斯指标

异步等待Foreach循环中的ConfigureAWait(FALSE)执行什么操作?

C#LINQ延迟执行和嵌套方法

岛屿和框架中的自定义控件库.Navigate-AccessViolationException

C#USB条形码 scanner 在第二次扫描时未写入行尾字符

为什么我的属性即使没有显式地设置任何[必需]属性,也会显示验证?

如何在.NET MAUI上在iOS和Mac之间共享代码?(no条件编译和无代码重复)

避免在特定区域中设置Visual Studio代码的自动格式