使用 EditForm 的 Razor Webassembly 对我不起作用
Razor Webassembly using EditForm not working for me
我正在使用 blazor webassembly,并尝试做一些非常简单的事情——一旦表单完成就触发一个事件...
下面的代码不起作用,我已经尝试了所有我能想到的“onsubmit”的不同组合...我做错了什么?
@page "/"
<h4>Add Group</h4>
<EditForm Model="@addGroupModel" onsubmit="@addGroup" >
<InputSelect @bind-Value="addGroupModel.CowCategoryId">
@if (CowCategories != null)
{
foreach (var cat in CowCategories)
{
<option value="@cat.ForagePlanCowCategoryId">@cat.ForagePlanCowCategoryName</option>
}
}
</InputSelect>
<InputText @bind-Value="addGroupModel.GroupName"></InputText>
<input type="submit" value="Add" />
</EditForm>
@code {
public class AddGroupModel
{
public int CowCategoryId { get; set; }
public string GroupName { get; set; }
}
public AddGroupModel addGroupModel = new AddGroupModel();
protected void addGroup()
{
var addModel = addGroupModel;
var cat = this.foragePlan.Categories.FirstOrDefault(c => c.ForagePlanCowCategoryId == addModel.CowCategoryId);
if (cat == null)
{
cat = this.CowCategories.FirstOrDefault(c => c.ForagePlanCowCategoryId == addModel.CowCategoryId);
}
this.foragePlan.ForagePlanCategoryGroups.Add(new ForagePlanCategoryGroup() { ForageUtilisationFactor = 100, ForagePlanCowCategoryId = cat.ForagePlanCowCategoryId, ForagePlanCowCategory = cat, GroupName = addModel.GroupName });
this.UpdateModel();
}
}
EditForm
是一个 Blazor 组件,它允许您将两个事件处理程序附加到它。首先,当您点击“提交”按钮时,OnValidSubmit 被触发。将代码放入此处理程序中,例如,执行 Web Api 调用以将表单数据保存在数据库中。
EditForm组件公开的第二个属性属性是OnInvalidSubmit
。当您也点击“提交”按钮时会触发此事件,但您的数据未通过验证。您可以在事件处理程序中放入一些代码,例如,向用户显示消息、执行一些检查等。
请注意,在下面的代码中,我已将 onsubmit="@addGroup"
更改为 OnValidSubmit="addGroup"
注意:我没有检查您的其余代码...
请注意,从未发生任何提交操作。事实上,“提交”事件被触发,但随后被框架取消。 Blazor 是一个 SPA 框架。没有传统的post返回,没有postget删除等Http请求。
@page "/"
<h4>Add Group</h4>
<EditForm Model="@addGroupModel" OnValidSubmit="addGroup" >
<InputSelect @bind-Value="addGroupModel.CowCategoryId">
@if (CowCategories != null)
{
foreach (var cat in CowCategories)
{
<option value="@cat.ForagePlanCowCategoryId">@cat.ForagePlanCowCategoryName</option>
}
}
</InputSelect>
<InputText @bind-Value="addGroupModel.GroupName"></InputText>
<input type="submit" value="Add" />
</EditForm>
@code {
public class AddGroupModel
{
public int CowCategoryId { get; set; }
public string GroupName { get; set; }
}
public AddGroupModel addGroupModel = new AddGroupModel();
protected void addGroup()
{
var addModel = addGroupModel;
var cat = this.foragePlan.Categories.FirstOrDefault(c => c.ForagePlanCowCategoryId == addModel.CowCategoryId);
if (cat == null)
{
cat = this.CowCategories.FirstOrDefault(c => c.ForagePlanCowCategoryId == addModel.CowCategoryId);
}
this.foragePlan.ForagePlanCategoryGroups.Add(new ForagePlanCategoryGroup() { ForageUtilisationFactor = 100, ForagePlanCowCategoryId = cat.ForagePlanCowCategoryId, ForagePlanCowCategory = cat, GroupName = addModel.GroupName });
this.UpdateModel();
}
}
根据文档,OnSubmit 实际上有效(但不是 onsubmit - 这完全取决于大小写)。我是 Blazor 的新手,发现这种混合大小写非常令人困惑,因为有时是驼峰式大小写,有时是较低的大小写,有时是混合大小写,这真是令人头疼。
visual studio 中的 intellisense 并没有真正发挥作用,而且无法调试,同时进行更改似乎很疯狂(您可以调试,但更改不会反映在浏览器中),这无济于事,或者您可以“运行 不调试”,然后刷新浏览器确实包含任何更改 - 好吧,我只想在调试时这样做,对我来说似乎很明显!)
我正在使用 blazor webassembly,并尝试做一些非常简单的事情——一旦表单完成就触发一个事件...
下面的代码不起作用,我已经尝试了所有我能想到的“onsubmit”的不同组合...我做错了什么?
@page "/"
<h4>Add Group</h4>
<EditForm Model="@addGroupModel" onsubmit="@addGroup" >
<InputSelect @bind-Value="addGroupModel.CowCategoryId">
@if (CowCategories != null)
{
foreach (var cat in CowCategories)
{
<option value="@cat.ForagePlanCowCategoryId">@cat.ForagePlanCowCategoryName</option>
}
}
</InputSelect>
<InputText @bind-Value="addGroupModel.GroupName"></InputText>
<input type="submit" value="Add" />
</EditForm>
@code {
public class AddGroupModel
{
public int CowCategoryId { get; set; }
public string GroupName { get; set; }
}
public AddGroupModel addGroupModel = new AddGroupModel();
protected void addGroup()
{
var addModel = addGroupModel;
var cat = this.foragePlan.Categories.FirstOrDefault(c => c.ForagePlanCowCategoryId == addModel.CowCategoryId);
if (cat == null)
{
cat = this.CowCategories.FirstOrDefault(c => c.ForagePlanCowCategoryId == addModel.CowCategoryId);
}
this.foragePlan.ForagePlanCategoryGroups.Add(new ForagePlanCategoryGroup() { ForageUtilisationFactor = 100, ForagePlanCowCategoryId = cat.ForagePlanCowCategoryId, ForagePlanCowCategory = cat, GroupName = addModel.GroupName });
this.UpdateModel();
}
}
EditForm
是一个 Blazor 组件,它允许您将两个事件处理程序附加到它。首先,当您点击“提交”按钮时,OnValidSubmit 被触发。将代码放入此处理程序中,例如,执行 Web Api 调用以将表单数据保存在数据库中。
EditForm组件公开的第二个属性属性是OnInvalidSubmit
。当您也点击“提交”按钮时会触发此事件,但您的数据未通过验证。您可以在事件处理程序中放入一些代码,例如,向用户显示消息、执行一些检查等。
请注意,在下面的代码中,我已将 onsubmit="@addGroup"
更改为 OnValidSubmit="addGroup"
注意:我没有检查您的其余代码...
请注意,从未发生任何提交操作。事实上,“提交”事件被触发,但随后被框架取消。 Blazor 是一个 SPA 框架。没有传统的post返回,没有postget删除等Http请求。
@page "/"
<h4>Add Group</h4>
<EditForm Model="@addGroupModel" OnValidSubmit="addGroup" >
<InputSelect @bind-Value="addGroupModel.CowCategoryId">
@if (CowCategories != null)
{
foreach (var cat in CowCategories)
{
<option value="@cat.ForagePlanCowCategoryId">@cat.ForagePlanCowCategoryName</option>
}
}
</InputSelect>
<InputText @bind-Value="addGroupModel.GroupName"></InputText>
<input type="submit" value="Add" />
</EditForm>
@code {
public class AddGroupModel
{
public int CowCategoryId { get; set; }
public string GroupName { get; set; }
}
public AddGroupModel addGroupModel = new AddGroupModel();
protected void addGroup()
{
var addModel = addGroupModel;
var cat = this.foragePlan.Categories.FirstOrDefault(c => c.ForagePlanCowCategoryId == addModel.CowCategoryId);
if (cat == null)
{
cat = this.CowCategories.FirstOrDefault(c => c.ForagePlanCowCategoryId == addModel.CowCategoryId);
}
this.foragePlan.ForagePlanCategoryGroups.Add(new ForagePlanCategoryGroup() { ForageUtilisationFactor = 100, ForagePlanCowCategoryId = cat.ForagePlanCowCategoryId, ForagePlanCowCategory = cat, GroupName = addModel.GroupName });
this.UpdateModel();
}
}
根据文档,OnSubmit 实际上有效(但不是 onsubmit - 这完全取决于大小写)。我是 Blazor 的新手,发现这种混合大小写非常令人困惑,因为有时是驼峰式大小写,有时是较低的大小写,有时是混合大小写,这真是令人头疼。
visual studio 中的 intellisense 并没有真正发挥作用,而且无法调试,同时进行更改似乎很疯狂(您可以调试,但更改不会反映在浏览器中),这无济于事,或者您可以“运行 不调试”,然后刷新浏览器确实包含任何更改 - 好吧,我只想在调试时这样做,对我来说似乎很明显!)