在给定 URL 路径和路由值的 ASP.NET Core 中生成 URL

问题描述 投票:0回答:1

如果我有“页面名称”或“路由名称”,还有路由值,那么我可以通过多种方式创建 URL:

return RedirectToPage
return RedirectToRoute
Url.Action
Url.ActionLink
Url.Link
Url.PageLink
Url.RouteUrl
LinkGenerator.GetPathByAction
LinkGenerator.GetPathByName
LinkGenerator.GetPathByPage
LinkGenerator.GetPathByRouteValues
LinkGenerator.GetUriByAction
LinkGenerator.GetUriByName
LinkGenerator.GetUriByPage
LinkGenerator.GetUriByRouteValues

但是假设我已经有一个 URL 路径(例如

/customer/edit
)和路由值(匿名对象或字典,例如
id
等于
1
),那么如何创建 URL?我无法使用
return Redirect(path)
,因为它不支持路线值。

我正在寻找一种

RedirectXXX("/customer/edit", new { id = 1, name = "foo" })
方法(如果存在)。

(是的,我可以自己写,但我假设这样的东西已经存在;是吗?)

asp.net-core .net-core asp.net-core-mvc razor-pages asp.net-core-7.0
1个回答
0
投票

解决方法:

public RedirectResult Redirect(string urlPath, Dictionary<string, string?> routeValues)
{
  // ...input validation elided
  var urlFull = QueryHelpers.AddQueryString(urlPath, routeValues);
  return Redirect(urlFull);
}

可以将其放入抽象基类中,例如

PageModelBase

我更喜欢内置解决方案,它也可以满足匿名对象(而不是字典)的需求,而无需 JSON(反)序列化黑客。如果有这样的事情,请发布,我会接受你的答案。

© www.soinside.com 2019 - 2024. All rights reserved.