【问题标题】:InputText requires a value for the 'ValueExpression' parameterInputText 需要 'ValueExpression' 参数的值
【发布时间】:2019-07-14 11:34:00
【问题描述】:

我希望能够使用 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”参数的值。通常这是在使用“绑定值”时自动提供的。

如何渲染页面并将简单的帖子发送到服务器?

【问题讨论】:

    标签: blazor blazor-server-side


    【解决方案1】:

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

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

    【讨论】:

    • 不是问题中所述的问题,但很高兴您将其发布在这里。这个错字应该给 IMO 一个警告...
    • 是的,@bind-value 似乎来自 HTML 标签,而@bind-Value 来自 Blazor...
    • 啊啊!谢谢,我同意上面的汤姆·斯坦的观点……确实需要对这些愚蠢的错别字提出警告。或者至少是一个警告
    • 天啊,这也是我的问题。老实说,在我看来,Blazor 还没有完全准备好正常使用......我学习 Angular 的时间更轻松了。
    【解决方案2】:

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

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

    我添加了 @ 字符,然后我的控件呈现出来。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        添加到InputText字段无意义拼写

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

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

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

        【讨论】:

        • "不支持 VB.NET" lmfao VB.Net 已死。它通过您可以注入的 JSRuntime 对象支持 jQuery。 VS Designer 一直是网络垃圾。不,它没有像寻呼机或 DataGrid 这样复杂的黑盒组件……它用于比 ASP.NET Web 窗体想象的更纯的 HTML。也就是说,您实际上在代码 sn-p 中给出了我需要的答案。
        • @minameismud 很有趣,本来想说同样的话 - 答案有效,但关于 Blazor 的 cmets 不正确。这是一个不同的、更好的范例。大量免费的网格/寻呼机和其他组件。
        猜你喜欢
        • 2021-07-29
        • 2022-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-24
        • 2023-03-14
        • 2018-01-08
        • 2014-02-28
        相关资源
        最近更新 更多