Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.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# 表单发布上的ViewModel中出现意外空值_C#_Asp.net Mvc_Forms_Viewmodel - Fatal编程技术网

C# 表单发布上的ViewModel中出现意外空值

C# 表单发布上的ViewModel中出现意外空值,c#,asp.net-mvc,forms,viewmodel,C#,Asp.net Mvc,Forms,Viewmodel,您好,我有一个填充viewmodel的方法,如下所示 foreach (ItemHasParts ihp in item.IHP) { Part part = db.Parts.Find(ihp.PartID); vm.Parts.Add(new ItemPartViewModel { ID = part.I

您好,我有一个填充viewmodel的方法,如下所示

foreach (ItemHasParts ihp in item.IHP)
            {
                Part part = db.Parts.Find(ihp.PartID);
              
                vm.Parts.Add(new ItemPartViewModel
                {
                    ID = part.ID,
                    PartID = part.PartID,
                    PartLink = part.PartIDLink,
                    MFGNumber = part.MFG_number,
                    QtyInItem = ihp.qty,
                    OnHand = part.On_Hand,
                    OnWorkOrder = part.On_Order_Count(true, true),
                    Committed = part.CommittedCount(true, true),
                    FSTK = part.FSTK,
                    PartName = part.Name,
                    SelectedActionType = PartActionType.Transfer
                });
            }
这是Post方法,我在这里检查本地人

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult SpecialOrderSelection(ItemViewModel model)
        {
            //list of transfers
            //list of harvests
            //list of disposals      
            if (ModelState.IsValid)
            {
                JobOrder jobOrder = db.JobOrders.Find(model.Id);
                if (jobOrder == null)
                {
                    return HttpNotFound();
                }
                ViewBag.JobOrderID = jobOrder.ID;
                // do whatever with 'model' and return or redirect to a View
            }

            ViewBag.submitted = true;
            return View(model);     

        }
其中一些在事后具有正确的值,但一些在回发时返回null,例如PartID,即使Part.PartID不为null


为什么会这样?

没有足够的信息来解决这个难题。重要的是表单在HTML中的外观。似乎有两种类型:
ItemViewModel
ItemPartViewModel
。表单post似乎正在将
ItemViewModel
的实例发送到控制器操作
speciallorderselection
。您不应该期望
零件
集合会自动水合。@GlennFerrie为什么会正确填充一些数据呢。不是所有内容都是空的吗?您的表单将数据发布到控制器操作,ASP.NET将解释该表单的post正文,并根据约定,根据名称匹配填充模型中的字段。如果您将输入参数的类型从
InputViewModel
切换到
FormCollection
,您将更准确地看到表单发送到控制器的内容。@GlennFerrie-hmm您认为AJAX帖子可能是一个好的选择吗?我认为这会很好地工作。然后你可以发布一个更复杂的对象。没有足够的信息来解决这个难题。重要的是表单在HTML中的外观。似乎有两种类型:
ItemViewModel
ItemPartViewModel
。表单post似乎正在将
ItemViewModel
的实例发送到控制器操作
speciallorderselection
。您不应该期望
零件
集合会自动水合。@GlennFerrie为什么会正确填充一些数据呢。不是所有内容都是空的吗?您的表单将数据发布到控制器操作,ASP.NET将解释该表单的post正文,并根据约定,根据名称匹配填充模型中的字段。如果您将输入参数的类型从
InputViewModel
切换到
FormCollection
,您将更准确地看到表单发送到控制器的内容。@GlennFerrie-hmm您认为AJAX帖子可能是一个好的选择吗?我认为这会很好地工作。然后可以发布更复杂的对象。