mvc动作无效参数给出了argumentexception 500而不是404

MoX*_*lod 6 .net c# asp.net-mvc

当我有这样的控制器动作.

public ActionResult _Files(long parentid)
        {
Run Code Online (Sandbox Code Playgroud)

如果你从没有parentid的浏览器调用该操作.它抛出一个System.ArgumentException和一个500响应

参数字典包含方法'System.Web.Mvc.ActionResult _Files'的非可空类型'System.Int64'参数'parentid'的空条目

如果没有PARENTID设计,不应该调用该动作.有没有办法不抛出异常(并返回500响应),而是返回400错误请求或未找到404(其中任何一个会更有意义的IMO).寻找一种能够在Web应用程序中以通用方式执行此操作的解决方案?

Dar*_*der 2

您可以执行以下操作:

    public ActionResult _Files(long  ? parentid)
    {
Run Code Online (Sandbox Code Playgroud)

ParentId 可为空。

那么在你的action中,你需要进行如下处理:

    public ActionResult _Files(long  ? parentid)
    {
      if(parentId.HasValue == false) {return some http status code;}
      // Then you can use parentId with its Value property.
Run Code Online (Sandbox Code Playgroud)