我使用的是.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设置页面的互动性.这件事就这样解决了.