带有 id 的 asp.net core 2 razor pages 路由

Posted

技术标签:

【中文标题】带有 id 的 asp.net core 2 razor pages 路由【英文标题】:asp.net core 2 razor pages route with id 【发布时间】:2018-02-17 02:19:21 【问题描述】:

有两个页面,一个是Edit page,另一个是Main Detail page,它是一些实体的组合数据 在编辑页面中: 编辑完成后,我将数据发布到 API,如下所示

public async Task<IActionResult> OnPostAsync(Guid id)
    
        ManufacturerAuthorizedPerson.Id = id;
        ManufacturerAuthorizedPerson.ManufacturerId = GetManufacturerId(id);
        if (!ModelState.IsValid)
        
            await OnGetAsync(id);
            return Page();
        
        HttpResponseMessage = await httpSystemApi.PutAsync("ManufacturerAuthorizedPersons", ManufacturerAuthorizedPerson);
        if (HttpResponseMessage.IsSuccessStatusCode)
        
            return RedirectToPage("../Detail", ManufacturerAuthorizedPerson.ManufacturerId);
        
        else
        
            await OnGetAsync(id);
            return Page();
        
    

OnPostMethod(Guid id)中的ID是编辑实体的值。我正在使用该值并让另一个值在 below 的路径中使用以获取详细信息页面。

ManufacturerAuthorizedPerson.ManufacturerId = GetManufacturerId(id);

但在详细信息页面上,值来自我从编辑页面发布方法发送的路由 ID,如下所示

 return RedirectToPage("../Detail", ManufacturerAuthorizedPerson.ManufacturerId);

不显示为路由 URL。而不是 ID 与我发送到编辑页面的相同。 有点迷茫。 需要帮助。

【问题讨论】:

为什么不能重定向到行动?检查this SO RedirectToAction with parameter的可能重复 编辑页面位置:Pages/X/Y/Edit 和 Detail 页面位置 Pages/X/Detail 所以我使用 RedirectToPage 方法。 【参考方案1】:

突然间,我找到了解决这个问题的简单方法。你应该输入:

return RedirectToPage("../Detail", new id = ManufacturerAuthorizedPerson.ManufacturerId);

【讨论】:

以上是关于带有 id 的 asp.net core 2 razor pages 路由的主要内容,如果未能解决你的问题,请参考以下文章

在 2 个控制器 ASP.NET Core 3.1 MVC 之间传递 ID

带有 EF Core 更新实体的 ASP.Net 核心 Web Api 如何

ASP.NET Core 2.1 Razor 页面返回带有模型的页面

带有 Windows 身份验证的 ASP.NET Core 2.1 自定义 RoleProvider

带有标识 2 和 EntityFramework 6(Oracle)的 ASP.NET Core MVC

ASP.NET Core MVC POST 方法一个具有外键 ID 的模型