我有一个发布到编辑控制器操作的表单,默认模型绑定器错误地将一些值设置为 0。正在使用的模型是一个复杂的模型(其中有多个对象),但我认为他不是问题,因为我尝试在它自己的模型中填充其中一个对象并且遇到了同样的问题。同样奇怪的是,其他属性的填充没有问题。
从图片中可以看出,Request.Form["Pricelist.PricelistId"] 发布的值为 3,但如果您查看 _adminEditPricelistVM.Pricelist.PricelistId = 0 中的模型属性。
这是视图模型:
public class adminEditPricelistVM
{
public Pricelist Pricelist { get; set; } //holds the current pricelist
public List<adminEditProductsPricelistProductsVM> PPPVMs { get; set; } //this is the model that contains a Product object and a PricelistProduct object PPPVMs = PPPVMs
public List<PricingFormula> PricingFormulas { get; set; } // this will be populated by all the PricingFormulas that apply to this pricelist
public List<ProductCategory> ProductCategories { get; set; } //this will be used to filter the PPPVMs and the PricingFormulas by category in the view
}
这是一些 HTML(非常标准,在这里):
<form action="/pricelist/edit/3" method="post">
<input data-val="true" data-val-number="The field Pricelist ID must be a number." data-val-required="The Pricelist ID field is required." id="Pricelist_PricelistId" name="Pricelist.PricelistId" type="hidden" value="3" />
唯一值得一提的是,我对 Pricelist 对象中的集合项使用了非顺序索引。Pricelist 包含 PricelistProducts 列表,PricelistProducts 包含 PricelistProductOptions 列表,PricelistProductOptions 包含 PricelistProductOptionsDetails 列表。这些在 HTML 中的格式如下:
<input id="Pricelist_PricelistProducts_Index" name="Pricelist.PricelistProducts.Index" type="hidden" value="1" />
<input id="Pricelist_PricelistProducts_1__PricelistId" name="Pricelist.PricelistProducts[1].PricelistId" type="hidden" value="3" />
<input checked="checked" id="1" name="Pricelist.PricelistProducts[1].ProductId" onclick="toggleProductChkBx(this,1)" type="checkbox" value="1" /><input name="Pricelist.PricelistProducts[1].ProductId" type="hidden" value="false" />
<input id="Pricelist_PricelistProducts_Index" name="Pricelist.PricelistProducts.Index" type="hidden" value="2" />
<input id="Pricelist_PricelistProducts_2__PricelistId" name="Pricelist.PricelistProducts[2].PricelistId" type="hidden" value="3" />
<input id="2" name="Pricelist.PricelistProducts[2].ProductId" type="checkbox" value="2" /><input name="Pricelist.PricelistProducts[2].ProductId" type="hidden" value="false" />
我不确定我还能添加什么。我期待着您的回复!