自定义模型绑定器会出错

时间:2012-11-20 18:07:09

标签: asp.net-mvc asp.net-mvc-3 model-binding

我尝试构建自定义模型绑定器并提供一些错误,如下所示:

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”。

0 个答案:

没有答案