我正在使用 ServiceStack 并使用该框架提供的标准模式来处理 Blazor Web 应用程序中的 CRUD 操作。创建新记录时该模式会按预期打开,但编辑现有记录时不会打开。
问题是这样的:
当我双击网格中的玩家记录进行编辑时,URL 会正确更新以包含
?edit=6
(或其他玩家 ID),但模式不会出现。然而,对于创建一个新的播放器,一切都按预期进行。
这是我的
Player
DTO:
using ServiceStack;
using ServiceStack.DataAnnotations;
using System;
public class Player : AuditBase
{
[AutoIncrement]
public int Id { get; set; }
public string Name { get; set; }
public int? Age { get; set; }
public PositionPlayer Position { get; set; }
public string TrainerId { get; set; }
}
public enum PositionPlayer
{
ATT,
CC,
DF,
GK
}
API 端点:
[Tag("players"), ServiceStack.DataAnnotations.Description("Create a new Players")]
[LocodeCss(Field = "col-span-12 sm:col-span-6", Fieldset = "grid grid-cols-8 gap-2", Form = "border overflow-hidden max-w-screen-lg")]
[ExplorerCss(Field = "col-span-12 sm:col-span-6", Fieldset = "grid grid-cols-6 gap-8", Form = "border border-indigo-500 overflow-hidden max-w-screen-lg")]
[Route("/players", "POST")]
[ValidateHasRole(Roles.Employee)]
[AutoApply(Behavior.AuditCreate)]
public class CreatePlayer : ICreateDb<Player>, IReturn<BoolResponse>
{
[ServiceStack.DataAnnotations.Description("Name of Player"), ValidateNotEmpty]
public required string Name { get; set; }
public int? Age { get; set; }
public PositionPlayer Position { get; set; }
}
[Tag("players")]
[ServiceStack.DataAnnotations.Description("Update an existing Player")]
[LocodeCss(Field = "col-span-12 sm:col-span-6", Fieldset = "grid grid-cols-8 gap-2", Form = "border overflow-hidden max-w-screen-lg")]
[ExplorerCss(Field = "col-span-12 sm:col-span-6", Fieldset = "grid grid-cols-6 gap-8", Form = "border border-indigo-500 overflow-hidden max-w-screen-lg")]
[Route("/players/{Id}", "PATCH")]
[ValidateHasRole(Roles.Employee)]
[AutoApply(Behavior.AuditModify)]
public class UpdatePlayer : IPatchDb<Player>, IReturn<IdResponse>
{
public int Id { get; set; }
}
模式会正确打开新的玩家记录。编辑时,URL 正确更改为 ?edit=6,表明正在传递正确的 ID。该模式似乎与其他 DTO 一样发挥了预期的作用,例如 Booking,其中创建和编辑功能都可以工作。问题:
什么可能导致标准模式无法打开以编辑现有记录? ServiceStack 或 Blazor 中是否存在我可能缺少的特定配置或步骤?
该模式似乎与其他 DTO 一起按预期运行,例如 Booking,其中创建和编辑功能都可以工作。
您已经确定了正确的行为,只有当数据模型具有创建和更新 API 时,才会出现创建和编辑表单。