Asp.net mvc 404取决于查询字符串参数或严格地取决于路由是否存在

Asp.net mvc 404取决于查询字符串参数或严格地取决于路由是否存在,asp.net-mvc,web-applications,asp.net-mvc-routing,Asp.net Mvc,Web Applications,Asp.net Mvc Routing,假设我有一个路由,比如/Item/Create/,它创建了一个新项目,但需要一个名为GroupId的强制参数。它必须通过/Item/Create?GroupId=xxx调用。 如果给定的GroupId不存在,我可以返回404吗?或者基于查询字符串参数返回404是错误的吗 我知道,如果我的路由本身是/Item/Create/{GroupId},并且没有找到GroupId,那么返回404就可以了。这本身并不是“错误的”,状态404表示“未找到资源”,并且您无法找到未指定的资源。然而,状态400(错误

假设我有一个路由,比如/Item/Create/,它创建了一个新项目,但需要一个名为GroupId的强制参数。它必须通过/Item/Create?GroupId=xxx调用。 如果给定的GroupId不存在,我可以返回404吗?或者基于查询字符串参数返回404是错误的吗

我知道,如果我的路由本身是/Item/Create/{GroupId},并且没有找到GroupId,那么返回404就可以了。

这本身并不是“错误的”,状态404表示“未找到资源”,并且您无法找到未指定的资源。然而,状态400(错误请求)可能更合适。这实际上可以归结为错误代码的预期含义和您对错误的解释


状态代码的完整列表可在的第10节中找到。4xx(错误)代码从开始。

看起来状态422是正确的选项。