InputText 需要“ValueExpression”参数的值

问题描述 投票:0回答:5

我希望能够使用 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”参数的值。通常,使用“bind-Value”时会自动提供此值。

如何呈现页面并向服务器发送简单的帖子?

blazor blazor-server-side
5个回答
150
投票

对我来说,这是因为我使用了

@bind-value

v
为大写。使用
@bind-Value


13
投票

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

根据 ASP.NET Core Blazor 表单和验证页面,您应该将 InputText 元素的声明更改为

<InputText @bind-Value="@Model.Name" placeholder="Name"/>

我添加 @ 字符,我的控件就会呈现。


8
投票

我忘记了

@
前面的
@bind-Value="@Model.Name"
。应该是
@bind-Value="@Model.Name"
,而不是
bind-Value="@Model.Name"


2
投票

添加到

InputText
字段无意义咒语

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

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

不幸的是,

Blazor
并不是一个真正的商业开发环境,因为
Blazor
不支持
VB.NET
,不支持
jQuery
,不被Visual Studio Designer支持,不方便像
ASP.NET这样的
Pager
开发者组件
DataGrid
等等。这只是一个明显赤裸裸的想法,但存在很多问题。


0
投票

此错误通常在未提供 ValueExpression 参数时发生,使用 @bind-Value 时通常会自动处理。

我使用@bind-Value 遇到了同样的问题。 尝试更改 ValueEpression 而不是 @bind-Value

一个简单的例子是:

© www.soinside.com 2019 - 2024. All rights reserved.