我尝试构建自定义模型绑定器并提供一些错误,如下所示:
public class DespesaProdutosModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
int loop = 1;
List<string> lista = (List<string>)bindingContext.ValueProvider.GetValue("Valor").RawValue;
DespesasProdutos despesasProdutos = new DespesasProdutos()
{
NF_CNF = bindingContext.ValueProvider.GetValue("NF_CNF").AttemptedValue,
IdFornecedor = Convert.ToInt32(bindingContext.ValueProvider.GetValue("IdFornecedor").AttemptedValue),
DataLancamento = DateTime.Now,
IdPagamento = Convert.ToInt32(bindingContext.ValueProvider.GetValue("IdPagamento").AttemptedValue),
IdTipo = Convert.ToInt32(bindingContext.ValueProvider.GetValue("IdTipo").AttemptedValue),
Descricao = bindingContext.ValueProvider.GetValue("Descricao").AttemptedValue,
Valor = Convert.ToDecimal(bindingContext.ValueProvider.GetValue("Valor").RawValue)
};
List<itensDespesa> listaProdutos = new List<itensDespesa>();
for (int i = 0; i < loop; i++)
{
listaProdutos.Add(new itensDespesa
{
Id = Convert.ToInt32(bindingContext.ValueProvider.GetValue("Id").AttemptedValue),
unidade = bindingContext.ValueProvider.GetValue("unidade").AttemptedValue,
quantidade = Convert.ToInt32(bindingContext.ValueProvider.GetValue("quantidade").AttemptedValue),
valorUnit = Convert.ToDecimal(bindingContext.ValueProvider.GetValue("valorUnir").AttemptedValue),
centroCusto = Convert.ToInt32(bindingContext.ValueProvider.GetValue("centroCusto").AttemptedValue),
tarefa = Convert.ToInt32(bindingContext.ValueProvider.GetValue("tarefa").AttemptedValue),
});
loop++;
}
despesasProdutos.itens = listaProdutos;
return despesasProdutos;
}
}
1 - 如何在我看来为所有产品创建一个循环?
for (int i = 0; i < loop; i++)
{
listaProdutos.Add(new itensDespesa
{
Id = Convert.ToInt32(bindingContext.ValueProvider.GetValue("Id").AttemptedValue),
unidade = bindingContext.ValueProvider.GetValue("unidade").AttemptedValue,
quantidade = Convert.ToInt32(bindingContext.ValueProvider.GetValue("quantidade").AttemptedValue),
valorUnit = Convert.ToDecimal(bindingContext.ValueProvider.GetValue("valorUnir").AttemptedValue),
centroCusto = Convert.ToInt32(bindingContext.ValueProvider.GetValue("centroCusto").AttemptedValue),
tarefa = Convert.ToInt32(bindingContext.ValueProvider.GetValue("tarefa").AttemptedValue),
});
loop++;
}
我知道上面的代码会产生错误,我需要了解如何为此做一个循环。
2 - 并且,为什么上面的代码会生成错误:System.NullReferenceException
3 - 最后,我相信bindingContext.ValueProvider.GetValue(“tarefa”)。AttemptedValue给出了基于name属性的元素,我是如何获得小数的?因为我的文化是PT-BR,金钱价值是“1.650,00”。