25

我希望能够使用 Blazor(服务器端渲染)渲染表单,但我没有得到正确的语法。

    <EditForm Model="@Model" OnValidSubmit="@SubmitValidForm">
        <FluentValidationValidator />
        <ValidationSummary />

        <p class="name">
            Name: <InputText bind-Value="@Model.Name" placeholder="Name"/>
        </p>

        <button type="submit">Submit</button>
    </EditForm>

@code {
    Person Model = new Person();

    void SubmitValidForm()
    {
        Console.WriteLine("OnValidSubmit");
    }
}

public class Person : ComponentBase
    {
        [Required(ErrorMessage = "Enter a name")]
        [StringLength(10, ErrorMessage = "That name is too long")]
        public string Name { get; set; } = "asd";

        [Range(0, 200, ErrorMessage = "Nobody is that old")]
        public int AgeInYears { get; set; }

        [Required]
        [Range(typeof(bool), "true", "true", ErrorMessage = "Must accept terms")]
        public bool AcceptsTerms { get; set; }
    }

但我得到这个错误

Microsoft.AspNetCore.Components.Forms.InputText 需要“ValueExpression”参数的值。通常这是在使用“绑定值”时自动提供的。

一个人如何渲染页面并向服务器发送一个简单的帖子?

4

4 回答 4

84

对我来说,这是因为我使用@bind-value.

v是大写的。利用@bind-Value

于 2019-10-01T01:10:06.180 回答
10

今晚我一直在为同样的事情苦苦挣扎。我在“绑定值”之前省略了“@”符号(我可以称它为属性吗?)并得到完全相同的错误。

根据ASP.NET Core Blazor 表单和验证页面,您应该将 InputText 元素的声明更改为<InputText @bind-Value="@Model.Name" placeholder="Name"/>

我添加 @ 字符和我的控件呈现。

于 2019-07-15T00:53:00.017 回答
5

@前面忘记了@bind-Value="@Model.Name"。应该是 @bind-Value="@Model.Name",不是bind-Value="@Model.Name"

于 2020-05-20T09:09:07.017 回答
4

添加到InputText字段无意义的咒语

ValueExpression="@( () => Model.Name )" 

是的,这是没有意义的,但这是有效的。

可惜Blazor不是真正的商业开发环境,因为Visual Studio DesignerBlazor不支持VB.NET,不支持jQuery,不支持,不方便ASP.NET开发者组件之类PagerDataGrid。它只是一个有很多问题的清晰裸露的想法。

于 2020-07-13T09:56:42.707 回答