ASP net MVC:如何忽略一个带路由的变量?

时间:2016-01-06 06:08:01

标签: asp.net-mvc url asp.net-mvc-routing

我有网址:http://url.com/segment1?id=885&variable_need_to_ignore=value

我需要从url中排除最后一个变量(&variable_need_to_ignore=value)并在没有变量的情况下处理它(理想情况下,在同一页面上没有重定向)http://url.com/segment1?id=885(理想情况下是路由配置)。

2 个答案:

答案 0 :(得分:2)

您可以将查询字符串参数中的内容更改为URL路径参数。 Check out this。恕我直言,这将使您的URL更清洁,并遵循更多的RESTful范例。

如果没有,那么只需创建一条去往" http://url.com/segment1"并忽略查询字符串参数" variable_need_to_ignore"在你的代码中。

它仍然留下了一些问题:为什么你需要忽略它?如果你不需要它,为什么它首先在URL中?

<强> EDITED

如果传入的参数超出您的控制范围而您需要忽略它们,那么只需在代码中忽略它们即可。由于资源存在于您提供的URL,恕我直言,404在您的情况下并不是真正有效的响应。查询字符串应该真正用于您将返回的结果的某种过滤器,它首先不应该是所有必需的参数。

答案 1 :(得分:1)

您可能需要在RouteConfig.cs中添加新路由,理想情况下应该在默认路由之前,有点类似于

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

您的操作方法应该有两个参数 - id和variable_to_ignore。