如何为路由属性设置一个子弹?

我有一个这样的动作:

[HttpGet]
[Route("~/books/{id:int:min(1)}/{slug?}")]
public ActionResult Book(int? id, string slug)
{
    if (slug == null)
    {
        slug = "awesome-book";
        return RedirectToAction("Book", new { id, slug });
    }

    etc.
}

问题在于,生成了新的路线,例如“ books / 1?slug = awesome-book ”,这不是我想要的,而是“ books / 1 / awesome-book ”。如何正确设置弹头?

克里斯·普拉特

这是生成路由URL的问题。由于slugroute参数是可选的,因此路由框架会在/books/1URL处停下来,然后附加未包含在URL中的任何参数作为查询字符串,在本例中为slug这是由于路由框架使用的短路系统,实际上您无能为力。

不过,有一种解决方法。如果使用其他路由而不是使用可选参数,则可以命名该路由,然后显式引用它。例如:

[Route("~/books/{id:int:min(1)}", Order = 1)]
[Route("~/books/{id:int:min(1)}/{slug}", Order = 2, Name = "BookWithSlug")]

然后,您可以使用以下方法生成URL:

return RedirectToRoute("BookWithSlug", new { id, slug });

并且,您将获得所需的URL。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用多个字段构建一个子弹

将鼠标悬停在一个子元素上之后,如何为父元素的背景设置样式?

如何知道我的一个子弹精灵是否与我的敌人/巨石精灵相撞?- pygame

如何为多个 TextField 设置一个 DatePicker。?

如何为另一个域设置Cookie

Apache:如何为一个 ServerName 设置多个站点?

如何为一个cron命令设置路径

如何为doskey命令设置一个doskey?

如何为默认单选按钮设置一个值?

如何为UIWebView设置一个喜欢的按钮?

如何为一个textField设置pickerView和Keyboard

如何为TimePicker设置一个空值?

如何为多个用户设置一个.bashrc文件?

如何为另一个UILabel设置动画

如何为一个BehaviorSubject / Observable服务的spyOn属性?

如何为每个子域创建一个站点实例

如何将子组件路由到另一个子组件

Debian新安装:如何为带有2个NIC的安全摄像机通信设置路由-(一个是4端口PCI交换机)?

如何使用防火墙CentOS 7将一个子网路由到另一个子网

如何通过一个子网中的特定SOCKS代理路由来自一个子网的流量?

如何为FastAPI路由设置OpenTelemetry跨度属性?

如何设置一个 bitbake/Yocto 配方以仅使用 boost 库的一个子集?

如何更改div中仅第一个子div的属性

如何为路由实现另一个var参数名称

如何在 VBA 中将字段的设置变量名称从一个子例程传递到另一个子例程?

如何使用一个值函数设置多个属性?

在R中使用mfrow:如何为每个子图赋予不同的y标签和x轴一个标签

设置另一个子网中的网关

我如何重定向到第一个子组件vue路由器