【发布时间】:2021-09-09 00:57:58
【问题描述】:
我想要一个用于创建/更新带有参数路由的记录的页面。
@page "/Clients/Detail/{ClientId?}"
...
<form method="post">
...
</form>
如果ClientId 为空,则使用空表单 with 获取新记录;
如果ClientId是一个数字,则加载记录并填写表格进行更新;
方法后面的代码是:
public async Task<ActionResult> OnPostAsync([FromServices] ClientsService _service)
{
if (ClientId == null)
{
CurrentClient.ClientId = Guid.NewGuid().ToString("n");
while ( await _service.GUIDAlreadyExistsAsync(CurrentClient.ClientId))
{
CurrentClient.ClientId = Guid.NewGuid().ToString("n");
}
await _service.CreateAsync(CurrentClient);
//todo redirect
return RedirectToRoute("/Clients/Detail/"+ CurrentClient.ClientId);
}
else
{
await _service.Update(CurrentClient);
return RedirectToPage("/Clients/Index");
}
}
记录已正确创建,但当我返回 /Client/Detail/12345678...AAAA 时,页面不存在。
如何指定现在用我生成的 id 打开同一个页面?
【问题讨论】:
-
很可能是你没有共享的 OnGetAsync() 方法引起的。你能分享整个文件来帮助诊断吗?
标签: c# asp.net-core redirect routes asp.net-core-5.0