InputText需要'ValueExpression'参数的值

时间:2019-07-14 11:34:00

标签: blazor-server-side

我希望能够使用Blazor(服务器端渲染)渲染表单

我尝试了大部分教程,但看不到我在做什么错。 我已将.net core更新为最新版本SDK 3.0.100-preview6-012264

    <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 requires a value for the 'ValueExpression' parameter. Normally this is provided automatically when using 'bind-Value'.'

我想渲染页面并在服务器上做一个简单的帖子

有人可以帮忙吗?

4 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:3)

我忘记了@的{​​{1}}前面。应该是@bind-Value="@Model.Name",而不是@bind-Value="@Model.Name"

答案 2 :(得分:3)

添加到InputText字段中无意义的拼写

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

是的,这没有意义,但这是可行的。

不幸的是,Blazor并不是真正的商业开发环境,因为Blazor不支持VB.NET,不支持jQuery(Visual Studio Designer不支持),没有方便ASP.NETPagerDataGrid等开发人员组件使用。这是唯一一个带有很多问题的明确主意。

答案 3 :(得分:0)

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

根据ASP.NET Core Blazor forms and validation页,您应该将InputText元素的声明更改为<InputText @bind-Value="@Model.Name" placeholder="Name"/>

我添加@字符,然后控件呈现。