我试图按照从 youtube 频道创建表单的说明进行操作,例如:https : //www.youtube.com/watch?v=zfqQ_fhmPOQ 或 https://www.youtube.com/watch?v=40njRXr6eUo 或者我什至尝试过像这样的一个非常简单的代码
<EditForm Model="@author" OnValidSubmit="SaveAuthor">
<p>
<label></label>
<InputText id="FirstName" @bind-Value="author.FirstName"/>
</p>
</EditForm>
Run Code Online (Sandbox Code Playgroud)
这是我的代码示例的 github 链接https://github.com/maxrena/BlazorServerApp.git
它仍然返回这样的错误
请帮我解决。
Isa*_*aac 12
这是罪魁祸首:
if ((EditContext == null) == (Model == null))
{
throw new InvalidOperationException($"{nameof(EditForm)} requires a {nameof(Model)} " +
$"parameter, or an {nameof(EditContext)} parameter, but not both.");
}
Run Code Online (Sandbox Code Playgroud)
您没有实例化您的模型,并且您没有 EditContext
你可能已经这样做了: Author author;
您应该按如下方式实例化您的对象:
你可以这样做:
@code {
Author author = new Author();
public class Author
{
public string FirstName {get; set;} = "Charls";
}
}
Run Code Online (Sandbox Code Playgroud)
运行示例:
<EditForm Model="@author" OnValidSubmit="SaveAuthor">
<p>
<label></label>
<InputText id="FirstName" @bind-Value="author.FirstName" />
</p>
<p><button type="submit">Submit</button></p>
</EditForm>
@code {
Author author = new Author();
private void SaveAuthor()
{
Console.WriteLine(author.FirstName);
}
public class Author
{
public string FirstName { get; set; } = "Charls";
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助...
要使服务器加载数据而不引发异常,您可以使用以下代码:
@if (author== null)
{
<p><em>Loading...</em></p>
}
else
{
<EditForm Model="@author">
....
</EditForm>
``
Run Code Online (Sandbox Code Playgroud)