InputText需要'ValueExpression'参数的值

kol*_*lek 2 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");
    }
}

Run Code Online (Sandbox Code Playgroud)

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; }
    }
Run Code Online (Sandbox Code Playgroud)

但是我明白了

'Microsoft.AspNetCore.Components.Forms.InputText requires a value for the 'ValueExpression' parameter. Normally this is provided automatically when using 'bind-Value'.'
Run Code Online (Sandbox Code Playgroud)

我想渲染页面并向服务器做一个简单的发布

有人可以帮忙吗?

Dha*_*tle 73

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

v是大写的。用@bind-Value

  • 是的,“@bind-value”似乎来自 HTML 标签,而“@bind-Value”来自 Blazor... (5认同)
  • 不是问题中所述的问题,但很高兴您将其发布在这里。在我看来,这个错字应该发出警告...... (4认同)
  • 啊啊!谢谢,我同意上面汤姆·斯坦的观点……确实需要对这些愚蠢的拼写错误发出警告。或至少是一个警告 (4认同)
  • 天哪,这也是我的问题。老实说,在我看来,Blazor 还没有完全准备好正常使用……我学习 Angular 的时间比较容易。 (3认同)

Jac*_*ues 6

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

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

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


Eri*_*que 5

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


Via*_*lav 5

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

ValueExpression="@( () => Model.Name )" 
Run Code Online (Sandbox Code Playgroud)

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

遗憾的是,Blazor并不是真正的商业开发环境,因为Blazor不支持VB.NET,不支持jQuery,不支持,Visual Studio Designer 不支持,没有方便ASP.NET开发的组件,比如PagerDataGrid等等。它只是一个有很多问题的清晰赤裸裸的想法。

  • “不支持VB.NET” lmfao VB.Net 已死。它通过可以注入的 JSRuntime 对象支持 jQuery。VS Designer 对于 Web 来说一直都是垃圾。不,它没有像寻呼机或 DataGrid 这样复杂的黑盒组件......它用于比 ASP.NET Web 窗体想象的更纯粹的 HTML。也就是说,您实际上在该代码片段中给了我所需的答案。 (4认同)
  • @minameismud 有趣,本来想说同样的事情 - 答案有效,但有关 Blazor 的评论不正确。这是一个不同的、更好的范例。有大量免费的网格/寻呼机和其他组件。 (4认同)