Пользовательские модели связующего дают ошибку
Я пытаюсь создать пользовательскую модель связки и дать несколько ошибок, как это:
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 дает элемент, основанный на атрибуте имени, как я могу получить десятичные дроби? потому что моя культура - PT-BR, а денежные значения - "1.650,00".