Blazor InputText、HTML 输入和直接从 C# 代码分配之间的差异

Differences among Blazor InputText, HTML Input and direct assigning from C# code

我正在学习这个新的 Blazor 框架,想知道使用 EditForm 及其组件与常规 html 输入与直接从代码分配以发布到数据库之间有什么区别。

例如输入和输入文本:

<EditForm Model="Advert" OnValidSubmit="Create">
<Input @bind-Value="advert.City" />
<InputText @bind-Value="advert.City"/>
</EditForm>

并直接从代码中赋值 advert.City="London。它会导致任何缺点或安全问题吗?

public async Task Create()
    {
        try
        {
            advert.City = "London";
            await advertRepository.CreateAd(advert);
            //navigationManager.NavigateTo("ProductsList");
        }
        catch (Exception ex)
        {
            //...
            Console.WriteLine(ex.Message);
        }
    }

input Html 元素和表单输入组件用于从用户收集数据。在这方面,它们的功能或多或少是相同的。您使用 Html 输入文本或 InputText 组件从用户那里获取数据。实际上,InputText 组件的底层对象是 Html 输入文本。但是,InputText 组件除了呈现 Html 输入文本之外还包含其他功能。这包括将 InputText 与其他对象相关联、格式化、验证,以及您无法在纯 Html 输入文本中找到的许多其他内容。

直接在您的代码中赋值没有问题,也没有任何缺点或安全问题。这在大多数情况下并不实用,因为您需要从用户那里获取数据,而这只能通过页面上的 UI 元素来完成。