Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试添加显示具有特定属性的项目列表的视图_C#_Asp.net Mvc_Razor - Fatal编程技术网

C# 尝试添加显示具有特定属性的项目列表的视图

C# 尝试添加显示具有特定属性的项目列表的视图,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我在行动上有困难。我有一个数据库中的机器列表,其中有一列数据类型为“Bit”,这是一个复选框,用于说明机器是否已交付到站点。我试图创建一个视图,仅显示标记为“已交付”的项目,但出现以下错误 [ArgumentException:parameters dictionary包含不可为null类型的'System.Boolean'for method'System.Web.Mvc.ActionResult deliveredItems(布尔)参数'ItemDeliveredItems'的null条目“

我在行动上有困难。我有一个数据库中的机器列表,其中有一列数据类型为“Bit”,这是一个复选框,用于说明机器是否已交付到站点。我试图创建一个视图,仅显示标记为“已交付”的项目,但出现以下错误

[ArgumentException:parameters dictionary包含不可为null类型的'System.Boolean'for method'System.Web.Mvc.ActionResult deliveredItems(布尔)参数'ItemDeliveredItems'的null条目“在”PreConReports.Controllers.MachineChecklistDBsController“中”。可选参数必须是引用类型、可为null的类型,或者声明为可选参数

我的完全控制者和行动是我努力实现的目标

public ActionResult deliveredItems(bool deliveredItem)
{
    var machineChecklist = from m in db.machineChecklist
                               select m;
    if (deliveredItem == true)
    {
        machineChecklist = machineChecklist.Where(p => p.itemDelivered);
    }
    else
    {
        return View(machineChecklist.ToList());
    }
    return View(machineChecklist.OrderBy(x => x.machineID));
    {
    }
}


您的操作具有参数bool deliveredItem

这是一个不可为null的类型,然后将是该操作的强制要求。这就是错误消息所指示的

您可以将该方法更改为以下内容

    public ActionResult deliveredItems(bool deliveredItem = false)
    {

        var machineChecklist = from m in db.machineChecklist
                               select m;
        if (deliveredItem == true)
        {
            machineChecklist = machineChecklist.Where(p => p.itemDelivered);

        }
        else
        {
            return View(machineChecklist.ToList());
        }
        return View(machineChecklist.OrderBy(x => x.machineID));
     }

通过提供默认参数,对该方法的任何调用都将默认为false,并且不会给出错误。这也意味着您不必在每个链接中提供值。

显示相关代码-您如何调用该方法(错误是不言自明的-您不必为参数
deliveredItem提供值。
)您好,谢谢您的回复,我应该提到,我对这一点非常陌生,并且仍在努力理解基本原理,我不完全理解您的回复,如果我请您详细说明一下,可以吗?谢谢您您显示的视图是不相关的。在您的代码中,您调用了该方法,但没有提供val参数的ue(只需在地址栏中输入
../MachineChecklistDBs/deliveredItems?deliveredItem=true
,您就会看到它工作得很好是的,您是对的,当将参数放入地址栏时,它工作得很好。我将在我的帖子中添加完整的控制器类,因为我显然遗漏了一些对每个人都显而易见的东西另外,谢谢。是的,你是对的,当把参数放在地址栏中时,这非常有效。我将在我的帖子中添加完整的控制器类,因为我显然遗漏了一些其他人显而易见的东西,谢谢你。绝对正确,我知道这会很愚蠢,但由于缺乏经验,我看不到很明显,我曾尝试使用(bool?deliveredItem),它可以很好地加载页面,但显示所有结果,而不仅仅是带有deliveredItem属性的结果,但这很有效。我有很多东西要学习,非常感谢。
    public ActionResult deliveredItems(bool deliveredItem = false)
    {

        var machineChecklist = from m in db.machineChecklist
                               select m;
        if (deliveredItem == true)
        {
            machineChecklist = machineChecklist.Where(p => p.itemDelivered);

        }
        else
        {
            return View(machineChecklist.ToList());
        }
        return View(machineChecklist.OrderBy(x => x.machineID));
     }