【发布时间】:2018-12-05 14:22:44
【问题描述】:
在 ASP.Net Core 中,您有多种方法可以为控制器操作生成 URL,最新的是标签助手。
为 GET 请求使用标签助手 asp-route 用于指定路由参数。据我了解,不支持在路由请求中使用复杂对象。有时,一个页面可能有许多指向自身的不同链接,可能只需要对每个链接的 URL 进行少量添加。
对我来说,对控制器动作签名的任何修改都需要更改所有使用该动作的标签助手似乎是错误的。 IE。如果将string query 添加到控制器,则必须将查询添加到模型并添加asp-route-query="@Model.Query" 分布在cshtml 文件中的20 个不同位置。使用这种方法是为将来的错误设置代码。
有没有更优雅的方法来处理这个问题?例如某种拥有 Request 对象的方式? (即来自控制器的请求对象可以放入模型并反馈到操作 URL。)
【问题讨论】:
-
asp-all-route-data可能会帮助您解决这里的具体问题。我不会对 Chris 的建议如此不屑一顾(这很可靠),但我知道有时“正确地做事”所需的更改并不那么实际。 -
谢谢,我已将路由数据作为一种选择。但它需要读取为
Dictionary<string, string>(值是字符串类型)的参数在起作用,或者对象反映到Dictionary<string, string>。那将是我的后备方案,但希望也许有更好的选择。 -
你的意思是像that这样的东西吗?并不是说我会推荐这种查询传递方法
-
谢谢。那里提出的解决方案似乎可行。描述的问题现在已经在 ASP.Net Core 中解决了,
asp-route-*在asp-all-route-data之后应用。因此,如果没有扩展字典,该解决方案可能会起作用。
标签: asp.net-core