2016-01-06 43 views
0

我有网址:http://url.com/segment1?id=885&variable_need_to_ignore=valueASP net MVC:如何忽略一个获取路由变量?

我需要排除的网址最后一个变量(&variable_need_to_ignore=value),并处理它不变量(最理想的情况重定向,在同一页上)http://url.com/segment1?id=885(与航线配置理想情况下)。

回答

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。

+0

感谢您的回复。将这个参数添加到我的所有操作中会有问题。 – thedriveee

+0

如果您的动作中没有该参数(即variable_to_ignore),那么为什么需要忽略它!可能,我无法理解你的问题。你能否更新你的问题,可能是你需要向人们展示你的行为签名。 – Nirman

+0

有一些社交网络脚本为引用的URL添加一些获取参数。如果至少有一个未知的get参数,则发送404状态码。 – thedriveee

2

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

如果没有,那么只需创建一条到“http://url.com/segment1”的路由,并在代码中忽略查询字符串参数“variable_need_to_ignore”即可。

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

EDITED

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

+0

感谢您的回复。我需要忽略它,因为有社交网络脚本为引用的URL添加了一些get参数。如果至少有一个未知的get参数,则发送404状态码。 – thedriveee