ASP.NET MVC:删除未使用/不支持的查询字符串值

问题描述:

如何清除/删除我的MVC操作不需要/支持的查询字符串参数?ASP.NET MVC:删除未使用/不支持的查询字符串值

例如,我的行动需要,说一个ID和一个布尔标志,这样的网址会是这样:http://localhost:someport/controller/action/?id=1&remove=true

但是,如果用户键入类似,http://localhost:someport/controller/action/?id=1&remove=true&some-junk-param=0

然后,我当请求被处理时,要求some-junk-param被移除并且不在地址栏中显示。

有什么想法?

+1

只有通过检查方法中的查询字符串值,然后再次重定向到没有“无效”值(您无法控制用户在地址栏中键入的内容)的方法。 –

+0

@StephenMuecke:或者,一旦处理完请求,最好是彻底摆脱查询字符串!我注意到,有些应用程序至少不是ASP.NET的! – Nauman

+0

如果用户在浏览器中使用“后退”按钮 –

如果您需要摆脱不必要的查询字符串参数,你有两个常规选项:

  1. 做它在服务器端。只有使用重定向才能完成此操作,这意味着当浏览器询问具有错误查询字符串的网址时,服务器会将浏览器重定向到具有良好查询字符串的网址。

注意事项:

  • 在这种情况下,我们有专门用于清洗查询字符串冗余查询。
  • 用户在浏览器历史记录中会有垃圾。

  1. 做它的客户端。 ASP.NET MVC模型联编程序将从查询字符串中仅获得预期的参数,因此在查询字符串中具有其他值时没什么不好。您可以使用javascript在客户端检查您的URL,并使用History API(IE10 +)重写或不更改历史记录。
  2. 注意事项:

  • 在这种情况下,你将不得不支持一下JS和C#代码之间不允许参数一致性

当然每一个方法是适合它的自己的情况,但看第二种方式的警告更好,因为它影响开发者的期限,而第一种方式影响用户期满。

开始=>