繁体   English   中英

Url.Action()不会删除默认值

[英]Url.Action() does not remove default values

我有一个简单的路由图。

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}/{seoName}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, seoName = UrlParameter.Optional }
);

现在,如果使用Url.Action("Index", "Home") ,则不能正确删除路由的默认值。 它给了我/Home/Index

现在,如果删除{id}{seoName}以及其相应的默认值,则将正确生成该URL,如/ (root)。

我在这里想念的是什么? 它似乎不是环境值,因为我正在访问没有id或seoNames的主页。

有任何想法吗?

您将需要多个映射来实现所需的功能,因为只允许将最后一个路由占位符设为可选。

routes.MapRoute(
    name: "SeoFriendly",
    url: "{controller}/{action}/{id}/{seoName}",
    defaults: new { controller = "Home", action = "Index", seoName = UrlParameter.Optional }
);

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM