【问题标题】:C# Razor redirect to page with custom route in .NetCore 5C# Razor 重定向到 .Net Core 5 中具有自定义路由的页面
【发布时间】: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


【解决方案1】:

尝试改变

return RedirectToRoute("/Clients/Detail/"+ CurrentClient.ClientId);

 return Redirect("/Clients/Detail/" + CurrentClient.ClientId);

【讨论】:

    猜你喜欢
    • 2020-05-25
    • 2020-05-06
    • 2018-01-31
    • 1970-01-01
    • 2018-10-18
    • 2023-03-24
    • 2020-07-09
    • 1970-01-01
    • 2018-12-04
    相关资源
    最近更新 更多