Model view controller 限制MVC路由上的额外参数会导致错误

Model view controller 限制MVC路由上的额外参数会导致错误,model-view-controller,routing,Model View Controller,Routing,我有一个结果页面,可以在url的末尾有参数。这些参数代表类别和过滤器,用于站点或电子邮件中的SEO链接。我们目前只允许route.config中的4个参数(类别和3个可选过滤器)。因此,这将是一个有效的url: 我们已经看到,最终用户将添加额外的参数,从而导致以下错误: 您正在查找的资源已被删除、名称已更改或暂时不可用 不是有效的url: 我的问题是,如果用户在最初从我们网站的页面或电子邮件广告活动中单击的url的末尾添加了一个额外的参数,那么cqn如何防止此错误 谢谢 朗达我想出了一个方法

我有一个结果页面,可以在url的末尾有参数。这些参数代表类别和过滤器,用于站点或电子邮件中的SEO链接。我们目前只允许route.config中的4个参数(类别和3个可选过滤器)。因此,这将是一个有效的url:

我们已经看到,最终用户将添加额外的参数,从而导致以下错误:

您正在查找的资源已被删除、名称已更改或暂时不可用

不是有效的url:

我的问题是,如果用户在最初从我们网站的页面或电子邮件广告活动中单击的url的末尾添加了一个额外的参数,那么cqn如何防止此错误

谢谢


朗达

我想出了一个方法来解决这个问题,如果其他人有过这个问题,他们可能会发现这个方法很有用

我可以在路线的末尾添加一个“通配符”参数(我称之为CatchAll),如下所示:

routes.MapRoute("ResultsCanonicalFiltered", "results/{Categoy}/{Filter1}/{Filter2}/{Filter3}/{*CatchAll}", new { controller = "Results", action = "Index", Category = UrlParameter.Optional, Filter1 = UrlParameter.Optional, Filter2 = UrlParameter.Optional, Filter3 = UrlParameter.Optional, CatchAll = UrlParameter.Optional });
也可以将其作为ActionResult的属性/参数添加到控制器中,然后我们可以忽略该参数

对于以下url,CatchAll参数将包含紫色/黄色/橙色的值,我们将忽略该值

就在这里。它可能不是最优雅的解决方案,但它可以工作并避免客户收到错误消息

朗达

routes.MapRoute("ResultsCanonicalFiltered", "results/{Categoy}/{Filter1}/{Filter2}/{Filter3}/{*CatchAll}", new { controller = "Results", action = "Index", Category = UrlParameter.Optional, Filter1 = UrlParameter.Optional, Filter2 = UrlParameter.Optional, Filter3 = UrlParameter.Optional, CatchAll = UrlParameter.Optional });