首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >路线已//在终点

路线已//在终点
EN

Stack Overflow用户
提问于 2015-02-24 15:50:02
回答 1查看 34关注 0票数 0

我有一个MVC4应用程序,它在我的路由中有一些可选的参数。当两个路由参数没有值时,url显示为"http://localhost:51424/MSDS/UpdateSupplier/SupplierNameHere//

有没有办法不让"//“在结尾显示?这条路目前还能用,但我觉得有点傻。

这是我的路线

代码语言:javascript
运行
复制
routes.MapRoute(
    name: "MSDS Update Supplier",
    url: "MSDS/{action}/{supplier}/{Part_No}/{Product_ID}",
    defaults: new { controller = "MSDS", action = "Index", supplier = UrlParameter.Optional, Part_No = UrlParameter.Optional, Product_ID = UrlParameter.Optional }
    );
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-24 18:03:19

有没有办法不让"//“在结尾显示?

是的,你可以去掉可选的参数。从技术上讲,每个路由只应该有一个可选的参数。

您可以通过构建一组从最特定到最不特定的路由来完成相同的任务,每个路由处理特定数量的段。应用程序在被路由后仍将工作相同,唯一的区别是它将匹配不同的路由,这取决于有多少段,然后适当地用正确的/符号数构建URL。

代码语言:javascript
运行
复制
routes.MapRoute(
    name: "MSDS Update Supplier Part_No Product_ID",
    url: "MSDS/{action}/{supplier}/{Part_No}/{Product_ID}",
    defaults: new { controller = "MSDS", action = "Index", Product_ID = UrlParameter.Optional }
    );

routes.MapRoute(
    name: "MSDS Update Supplier",
    url: "MSDS/{action}/{supplier}",
    defaults: new { controller = "MSDS", action = "Index", supplier = UrlParameter.Optional }
    );

解释

第一条路由现在有所需的段,所以如果没有全部提供,它们就会错过,然后框架将尝试列表中的下一条路径。

因此,从上到下运行路线,第一条路线将匹配MSDS,然后是3或4个多段。

如果MSDS后面跟着1或2个段,那么它将不匹配第一条路由(因为它至少需要3条)和匹配第二条路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28700232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档