我在ASP.NET Core MVC Web App中构建引用表单。我有一个QuoteVM,其中包含报价所需的属性以及一个List QuoteItems,用于在报价上动态存储多个项目:
public class QuoteVM
{
public string Status { get; set; }
public QuoteItemVM NewQuoteItem { get; set; }
#region QuoteProperties
// Not relevant
#endregion
#region Company
// Not relevant
#endregion
#region Client
// Not relevant
#endregion
public List<QuoteItemVM> QuoteItems { get; set; }
public List<string> WorkItems = new List<string>();
public List<string> UnitList = new List<string>
{
"lm",
"fm",
"dag",
"heild",
"stk",
"klst"
};
}
在我看来,我已经添加了一个带有自动完成功能的输入字段,以便在选择引用项目时添加引用项目,我的表单将VM发布到控制器中的POST操作并使用新的引用项目再次返回QuoteVM添加到QuoteItems列表中,列表按引用项目编号属性排序,然后再将其发送到视图。调试时我可以看到列表正在正确发送到视图,我也可以通过在段落中写出我的QuoteItems列表来验证。在这里,我已经在我的报价中添加了4个项目,一切都按预期工作: Values are still correct
现在我们终于遇到的问题是,当我添加一个数字低于我在表中的数字的报价项时,它会在渲染表时开始显示错误的值,但是列表将是正确的,因为控制器是正确返回列表: Where things start to go south...
我认为相关的部分:
@{ // display values to check if they're correct
foreach (var item in Model.QuoteItems)
{
<p>@item.Number - @item.Description - @item.Unit</p>
}
}
<tbody>
@{ // the goal is to display them correctly here
for (int i = 0; i < Model.QuoteItems.Count(); i++)
{
<tr>
<td><input type="checkbox" class="i-checks" name="input[]"></td>
<td><input asp-for="QuoteItems[i].Number" class="form-control text-center input-sm" /></td>
<td><input asp-for="QuoteItems[i].Description" placeholder="Verkþáttur" class="form-control input-sm" /></td>
<td><input asp-for="QuoteItems[i].Quantity" placeholder="Magn" class="form-control text-center input-sm jsQuantity calculate" /></td>
<td><input asp-for="QuoteItems[i].Unit" placeholder="Eining" class="form-control text-center units input-sm" /></td>
<td><input asp-for="QuoteItems[i].UnitPrice" placeholder="Einingarverð" class="form-control text-center input-sm jsUnitPrice calculate" /></td>
<td><input asp-for="QuoteItems[i].TotalPrice" class="form-control text-center input-sm jsTotalPrice" /></td>
<td><input asp-for="QuoteItems[i].TotalPriceVAT" class="form-control text-center input-sm jsTotalPriceVAT" /></td>
</tr>
}
}
</tbody>
有没有人遇到类似问题或者知道可能导致这种情况的原因?
答案 0 :(得分:0)
我的解决方案是在模型之前添加ModelState.Clear()以进行查看。