需要在Controller中将List传递给HttpPost在视图中,我需要传回该列表。它包括一个可编辑的复选框,这是我真正需要的项目。显示的所有其他字段仅供阅读使用。如果用户想要将项目指定为已清除,他们会选中isClearance复选框。因此,当他们点击保存按钮时,它会点击HttpPostindex()。但是,它返回空值。如果我将它更改为只是一个modelObject而不是List,它就可以正常工作。这是控制器查询:publicActionResultIndex(){Listcc=newList();ClearanceViewModelc=newClearanceViewModel();c.sku="123";c.title="测试1";c.includeOnSite=true;c.productID=123;c.salePrice=Convert.ToDecimal(2.99);c.RetailPrice=Convert.ToDecimal(4.99);c.isClearance=false;cc.添加(c);c.sku="123";c.title="测试1";c.includeOnSite=true;c.productID=123;c.salePrice=Convert.ToDecimal(2.99);c.RetailPrice=Convert.ToDecimal(4.99);c.isClearance=false;cc.添加(c);返回视图(抄送);}这是图片:@modelList@{ViewBag.title="清仓清单";}清仓清单@using(Html.BeginForm()){if(Model.Count()>0){SkuTitleIncludeOnSiteSalepriceRetailPriceQuantity清仓@foreach(variteminModel){@Html.HiddenFor(modelItem=>item.productID);@Html.DisplayFor(modelItem=>item.sku)@Html.DisplayFor(modelItem=>item.title)@Html.DisplayFor(modelItem=>item.includeOnSite)@Html.DisplayFor(modelItem=>item.salePrice)@Html.DisplayFor(modelItem=>item.RetailPrice)@Html.DisplayFor(modelItem=>item.quantity)@Html.EditorFor(modelItem=>item.isClearance)}}}这是Controller中的HttpPost(当它遇到foreach循环时,clearanceModel为null,当它应该有一个项目列表时):[HttpPost]publicActionResultIndex(ListclearanceModel){foreach(ClearanceViewModeliteminclearanceModel){if(item.isClearance==true){//获取产品对象,这样我们就可以将其添加到清仓促销中varproduct=_unitOfWork.ProductRepository.Get(filter:p=>p.productID==item.productID).FirstOrDefault();//确保它不在清仓促销中varproductPromotion=_unitOfWork.ProductPromotionRepository.Get(filter:pp=>pp.productID==product.productID&&pp.promotion.Name=="Clearance").FirstOrDefault();//添加产品促销if(productPromotion==null){//获取清仓促销varpromotion=_unitOfWork.PromotionRepository.Get(filter:pr=>pr.Name=="Clearance").FirstOrDefault();if(promotion!=null){ProductPromotionpromo=newProductPromotion();promo.productID=product.productID;promo.promotionID=promotion.promotionID;promo.onDate=DateTime.Now;promo.offDate=null;promo.canOverwrite=true;_unitOfWork.ProductPromotionRepository.Create(促销);_unitOfWork.SaveChanges();绝对不是foreach循环,你必须使用for循环。这样,indexer[i]用于为生成的html中的每个输入元素创建唯一的名称属性。@for(inti=0;imodelItem[i].productID);@Html.DisplayFor(modelItem=>modelItem[i].sku)@Html.DisplayFor(modelItem=>modelItem[i].title)@Html.DisplayFor(modelItem=>modelItem[i].includeOnSite)@Html.DisplayFor(modelItem=>modelItem[i].salePrice)@Html.DisplayFor(modelItem=>modelItem[i].RetailPrice)@Html.DisplayFor(modelItem=>modelItem[i].quantity)@Html.EditorFor(modelItem=>modelItem[i].isClearance)}modelbindingcollection的详细解释请看这篇文章Youneedamodelbindertobindlist,oradisplayTemplate..now生成的列表项名称为:item.sku、item.title等。标准模型binder无法将其绑定到列表。以上是C#学习教程:需要将List传递给Controller中的HttpPost才能分享所有内容,如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
