【问题标题】:ASP net MVC: How to ignore one get variable with route?ASP net MVC:如何通过路由忽略一个获取变量?
【发布时间】:2016-04-10 03:55:32
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    已编辑

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

    【讨论】:

    • 感谢您的回复。我需要忽略它,因为有社交网络脚本将一些 get 参数添加到引用的 URL。如果至少有 1 个未知的获取参数,我会发送 404 状态代码。
    【解决方案2】:

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

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

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

    【讨论】:

    • 感谢您的回复。将这个参数添加到我的所有操作中对我来说是有问题的。
    • 如果您的操作中没有该参数(即 variable_to_ignore),那么为什么需要忽略它!可能,我无法理解你的问题。您能否更新您的问题,可能需要向人们展示您的操作签名。
    • 有一个社交网络脚本可以为引用的 URL 添加一些获取参数。如果至少有 1 个未知的获取参数,我会发送 404 状态代码。
    猜你喜欢
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    • 2012-02-24
    • 1970-01-01
    • 2012-04-30
    • 2015-10-25
    • 1970-01-01
    相关资源
    最近更新 更多