我创造一个文件应用程序中,允许人们在我的业务访问文档有关的某些软件。 有了这个,我有一个网页,其中的任何管理员可以管理的类别和用户。 为此,我希望管理能够改变一个类别,其中它应该显示的对我的导航菜单. 现在,第一部分,它应该正确顺序的分类基于以内导航菜单的工作。 但是当我试图编辑现有的分类和它们的顺序号码,订单就不会更新因此,看到这样的例子:
这是之后编辑的类别,"反应"应为2,API将为0,并测试会可以1
正如你可以看到,以没有意义了。 显然,不应该允许超过1的任何顺序。
现在,问题很可能是来自这个代码。
CategoryService.cs
public async Task<List<Category>> InsertCategory(Category category)
{
await GetCategories();
for (int i = 0; i < Categories.Where(c => c.Order >= category.Order).Count(); i++)
{
Categories[i].Order++;
if (Categories[i].Order == category.Order)
{
Categories[i].Order--;
break;
}
}
await categoryRepository.InsertAsync(Categories);
EventHelper.NotifyCategoryListChanged(Categories, EventArgs.Empty);
return Categories;
}
顺序的代码如下:
CategoryDialog.剃须刀
private async void SaveCategory(Category category)
{
if(!string.IsNullOrEmpty(category.Name))
{
await categoryService.SaveCategory(category);
Snackbar.Add("Category " + category.Name + " added", Severity.Success);
MudDialog.Close(DialogResult.Ok(category.Id));
}
else
{
Snackbar.Add("Please enter a category name.", Severity.Warning);
}
}
上述被称为代码后按下按钮。 这传递一个类别与一个特定的顺序号,此数获得通过从一个简单的下拉菜单。
的 SaveCategory
功能看起来是这样的:
CategorySerice.cs
public async Task<Category> SaveCategory(Category category)
{
await InsertCategory(category);
if (categoryRepository.GetByIdAsync(category.Id) == null)
{
await categoryRepository.AddAsync(category);
}
else
{
await categoryRepository.SaveAsync(category);
}
EventHelper.NotifyCategoryListChanged(Categories, EventArgs.Empty);
return category;
}
这种功能的电话有问题的功能之前,实际上节省/加入的任何数据库。 因此,它可以为新增加或编辑的类别。
在此之后,事件得到解雇通知我的导航菜单,已经作出的改变,应该重新呈现,以显示这一点。 这没有问题。
但我想不通我怎么会有适当的订单被列当我改变它们。 快速提醒,这一功能不当编辑现有的类别。 如果我想添加一个新的类别,例如在以2. 它不适当地移一切都没有问题。
任何帮助是受欢迎的!
CategoryService.cs
这是一个单一来源的真相,时GetCategories
被称,它抓住了新信息的数据库。