Inquiridor
MVC4 C# Create submit null

Pergunta
-
Todas as Respostas
-
Poderia reformular sua questao? Nao consigo entender o que voce quer fazer.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
-
-
Post o codigo da view
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
-
@model BRN_DG.Models.Programa_Imunizacao @{ ViewBag.Title = "Create"; Layout = "~/Views/Shared/_Layout.cshtml"; } @using (Html.BeginForm("Create", "Principal", FormMethod.Post, new { id = "formularioprincipal" })) { @Html.AntiForgeryToken() @Html.ValidationSummary(true) <style> .google-table-cell { font-size: 11px; } .form-control { font-size: 12px; } </style> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script type="text/javascript"> var value; google.load("visualization", "1", { packages: ["table"] }); google.setOnLoadCallback(function () { drawtable('') }); $(document).ready(function () { value = $("#animal").val(); if (value != undefined) { drawtable(value); } $("#animal").change(function () { value = $(this).val(); drawtable(value); }); }); function drawtable(codigo) { var url = '/Programa_Imunizacao/Principal/RetornaIdade/' + codigo; $.get(url, {}, function (data) { var tdata = new google.visualization.DataTable(); tdata.addColumn('date', 'DATA ATUAL'); tdata.addColumn('date', 'DATA NASCIMENTO'); tdata.addColumn('string', 'IDADE ANO(S)'); tdata.addColumn('string', 'IDADE MES(ES)'); tdata.addColumn('string', 'IDADE SEMANA(S)'); for (var i = 0; i < data.length; i++) { if (data[i].data_Nasc != null) tdata.addRow([ToJavaScriptDate(data[i].data_atual), ToJavaScriptDate(data[i].data_Nasc), (data[i].IDADE_ano).toString(), (data[i].IDADE_mes).toString(), (data[i].IDADE_semana).toString()]); } var table = new google.visualization.Table(document.getElementById('Tabela_idade')); table.draw(tdata, { showRowNumber: true, cssClassNames: { tableCell: 'google-table-cell' } }); }); var url = '/Programa_Imunizacao/Principal/RetornaObservacao/' + codigo; $.get(url, {}, function (data) { var tdata = new google.visualization.DataTable(); tdata.addColumn('date', 'DATA ATENDIMENTO'); tdata.addColumn('string', 'OBSERVACAO'); for (var i = 0; i < data.length; i++) { if (data[i].observacao != null) tdata.addRow([ToJavaScriptDate(data[i].data_atividade), data[i].observacao]); } var table = new google.visualization.Table(document.getElementById('Tabela_observacao')); table.draw(tdata, { showRowNumber: true, cssClassNames: { tableCell: 'google-table-cell' } }); }); //} //function drawtable(codigo) { var url = '/Programa_Imunizacao/Principal/Aplicacoes/' + codigo; $.get(url, {}, function (data) { var tdata = new google.visualization.DataTable(); tdata.addColumn('string', 'PRODUTO'); tdata.addColumn('date', 'DATA'); tdata.addColumn('string', 'ÚLTIMA APLICAÇÃO'); tdata.addColumn('date', 'REFORÇO'); for (var i = 0; i < data.length; i++) { if (data[i].data_atividade != null) tdata.addRow([(data[i].PRODUTO).toString(), ToJavaScriptDate(data[i].data_atividade), (data[i].ultimaaplicacao).toString(), ToJavaScriptDate(data[i].data_reforco)]); } var table = new google.visualization.Table(document.getElementById('Tabela_aplicacao')); table.draw(tdata, { showRowNumber: true, cssClassNames: { tableCell: 'google-table-cell' } }); }); } </script> <div class="panel panel-primary"> <div class=" panel-heading"> <h3 class="panel-title">1. REGISTRO DE VACINAS</h3> </div> </div> <div class="panel panel-primary"> <div class=" panel-heading"> <h3 class="panel-title"><i>1.1. ATENDIMENTO</i></h3> </div> <div class="panel-body"> <div class="row"> <div class="editor-label col-md-4"> <label class="control-label">Proprietário</label> </div> <div class="editor-field col-md-6"> @*@Html.DropDownList("cod_Proprietario", (SelectList)ViewBag.cod_proprietario, String.Empty, new { id = "proprietario", name = "Diario.cod_proprietario", @class = "form-control" })*@ @Html.DropDownList("programa_imunizacao.Diario.cod_proprietario", (SelectList)ViewBag.cod_Proprietario, String.Empty, new { id = "proprietario", @class = "form-control" }) </div> <div class="editor-field col-md-1"> <input type="button" class="btn btn-info" value="Novo" id="botao_proprietario"> </div> </div> <div class="row"> <div class="editor-label col-md-4"> <label class="control-label">Nome do animal</label> </div> <div class="editor-field col-md-6"> <select class="form-control" id="animal" name="programa_imunizacao.Diario.cod_animal"></select> </div> <div class="editor-field col-md-1"> <input type="button" class="btn btn-info" value="Novo" id="botao_animal"> </div> </div> <div class="row"> <div class="editor-field col-md-4"> <label class="control-label">Data da aplicação</label> </div> <div class="editor-field col-md-6"> <input class="form-control" data-jqui-dpicker-dateformat="dd/mm/yy" data-jqui-type="datepicker" id="data_atividade" name="programa_imunizacao.Diario.data_atividade" type="text" /> </div> </div> </div> </div> <input type="text" id="cod_pagto_status" name="programa_imunizacao.Diario.cod_pagto_status" value="1" hidden /> <input type="text" id="cod_profissional" name="programa_imunizacao.Diario.cod_profissional" value="1" hidden /> } <div class="panel panel-primary"> <div class=" panel-heading"> <h3 class="panel-title"><i>1.2. PRODUTO</i></h3> </div> <form id="formprod" name="formprod" action="#" method="post"> <div class="panel-body"> <div class="row"> <div class="editor-label col-md-4"> <label class="control-label">Princípio ativo</label> </div> <div class="editor-field col-md-6"> @Html.DropDownList("cod_Med_Principio_Ativo", null, String.Empty, new { id = "Principio", @class = "form-control" }) </div> </div> <div class="row"> <div class="editor-label col-md-4"> <label class="control-label">Vacina</label> </div> <div class="editor-field col-md-6"> @Html.DropDownList("cod_Med_Produto", null, String.Empty, new { id = "Med_Produto", @class = "form-control" }) </div> <div class="editor-field col-md-1"> <input type="button" class="btn btn-info" value="Novo" id="botao_farmacia"> </div> </div> <div class="row"> <div class="editor-label col-md-4"> <label class="control-label">Estoque</label> </div> <div class="editor-field col-md-6"> @Html.DropDownList("cod_Prod_Serv", null, String.Empty, new { id = "cod_Prod_Serv", name = "nome", @class = "form-control" }) </div> <div class="editor-field col-md-1"> <input type="text" id="cod_Med_Produto" name="cod_Med_Produto" /> <input type="text" id="nomeProdServ" name="Produto_Servico.nome" /> </div> </div> <div class="row"> <div class="editor-label col-md-4"> </div> <div class="editor-field col-md-1"> Lote: </div> <div class="editor-field col-md-5"> @Html.TextBoxFor(model => model.Produto_Servico.lote_Partida, new { id = "lote_Partida", name = "Produto_Servico[0].lote_Partida" }) </div> <div class="editor-field col-md-1"> </div> </div> <div class="row"> <div class="editor-label col-md-4"> </div> <div class="editor-field col-md-1"> Fab.: </div> <div class="editor-field col-md-5"> @Html.TextBoxFor(model => model.Produto_Servico.data_Fabricacao, new { id = "data_Fabricacao", name = "Produto_Servico[0].data_Fabricacao" }) </div> <div class="editor-field col-md-1"> </div> </div> <div class="row"> <div class="editor-label col-md-4"> </div> <div class="editor-field col-md-1"> Val.: </div> <div class="editor-field col-md-5"> @Html.TextBoxFor(model => model.Produto_Servico.data_Vencimento, new { id = "data_Vencimento", name = "Produto_Servico[0].data_Vencimento" }) </div> <div class="editor-field col-md-1"> </div> </div> <div class="row"> <div class="editor-field col-md-4"> <label class="control-label">Data reforço</label> </div> <div class="editor-field col-md-6"> @Html.JQueryUI().Datepicker("data_reforco", null, new { @class = "form-control" }) </div> </div> <div class="row"> <div class="editor-label col-md-4"> <label class="control-label">Local da aplicação</label> </div> <div class="editor-field col-md-6"> @Html.TextAreaFor(model => model.local_Aplicacao, new { @class = "form-control" }) </div> </div> <div class="row"> <div class="editor-label col-md-4"> <label class="control-label">Observação</label> </div> <div class="editor-field col-md-6"> @Html.TextAreaFor(model => model.observacao, new { @class = "form-control" }) </div> </div> <div class="row"> <div hidden> <input type="text" id="programa_imunizacao.Diario.cod_pagto_status" value="1" hidden /> <input type="text" id="programa_imunizacao.Diario.cod_profissional" value="1" hidden /> <input type="text" id="programa_imunizacao.Diario.cod_prod_ser_tipo" value="6" hidden /> @Html.DropDownList("cod_Prod_Serv", null, String.Empty, new { Name = "Produto_Servico.nome", id = "cod_Prod_Serv" }) <input type="text" id="programa_imunizacao.Produto_Servico.cod_Tipo" value="6" hidden /> <input type="text" id="programa_imunizacao.Produto_Servico.cod_Prod_Serv_Cat" value="2" hidden /> </div> </div> <div class="row"> <div class="col-lg-1"> <button id="add" class="btn btn-primary">Adiciona produto</button> </div> </div> </div> </form> <div class="panel-body"> <div class="row"> <div class="table-responsive col-md-12"> <table class="table table-hover table-bordered" id="tabelaproduto"> <thead> <tr style="font-size:10px"> <th> <i>Produto</i> </th> <th> <i>Lote</i> </th> <th> <i>Fabricação</i> </th> <th> <i>Vencimento</i> </th> <th> <i>EXCLUIR</i> </th> </tr> </thead> <tbody id="linhascomp"> @foreach (var item in @ViewBag.Produtos) { <tr style="font-size:10px"> <td> @item.Produto_Servico.nome </td> <td> @item.Produto_Servico.lote_Partida </td> <td> @item.Produto_Servico.data_Fabricacao </td> <td> @item.Produto_Servico.data_Vencimento </td> <td> <button onclick="return false;">Excluir</button> </td> </tr> } </tbody> </table> </div> </div> </div> </div> <font style="color: red;"> <b> <div id="validacaoproduto"><p></p></div> </b> </font> <p> <input type='submit' value='Salvar' class="btn btn-success" onclick='submitDetailsForm()' /> <a href="/Programa_Imunizacao/Principal"><input type="button" value="Voltar" class="btn btn-success" /></a> </p> <style> .table-overflow { max-height: 200px; overflow-y: auto; overflow-x: auto; } </style> <div class="panel panel-primary"> <div class=" panel-heading"> <h3 class="panel-title">2. PAINEL DE MONITORAMENTO</h3> </div> <div class="panel-body"> <div class="panel panel-success"> <div class="panel-body"> <div> <div align="right"><a href="javascript:fcGerarPDF();"><label>Controle de vacinas:</label> <input type="button" value="Gerar PDF" class="btn-default" /></a></div> <fieldset> <h5> <b> 2.1. Observações:</b> </h5> <div id="Tabela_observacao"></div> </fieldset> <fieldset> <h5> <b>2.2. Idade: </b> </h5> <div id="Tabela_idade"></div> </fieldset> <fieldset> <h5><b>2.3. Vacinas:</b></h5> <div id="Tabela_aplicacao"></div> </fieldset> </div> </div> </div> </div> </div> <script> function submitDetailsForm() { $("#formularioprincipal").submit(); } $("#add").click(function () { $.ajax({ url: '@Url.Action("AddProduto", "Principal")', cache: false, type: "POST", data: $('#formprod').serializeArray(), success: function (data) { if (data.success) { $('#tabelaproduto > tbody:last').append('<tr style="font-size:10px">' + '<td hidden>' + data.id + '</td>' + '<td>' + data.nome + '</td>' + '<td>' + data.lote_Partida + '</td>' + '<td>' + data.data_Fabricacao + '</td>' + '<td>' + data.data_Vencimento + '</td>' + '<td>' + '<input type="image" src="/Images/excluir.png" onclick="clicado(this)">' + '</td>' + '</tr>'); $('#formprod')[0].reset(); $("#validacaoproduto").html(""); } else { $("#validacaoproduto").html(data.msg); } } }); return false; }); function clicado(a) { console.log($(a).closest('tr')[0].rowIndex); var linhaIndex = $(a).closest('tr')[0].rowIndex; var codigo = $(a).closest('tr').children('td')[0].innerText; $.ajax({ url: '@Url.Action("DelProduto", "Programa_Higiene")', type: "POST", contentType: 'application/json; charset=utf-8', data: { codigo: codigo }, success: function (data) { document.getElementById("tabelaproduto").deleteRow(linhaIndex); console.log("ok"); } }); } function DataFormatada(data) { var dia = data.getDate(); if (dia.toString().length == 1) dia = "0" + dia; var mes = data.getMonth() + 1; if (mes.toString().length == 1) mes = "0" + mes; var ano = data.getFullYear(); return dia + "/" + mes + "/" + ano; } function fcGerarPDF() { window.location.href = "@Url.Action("Report", new { id = "PDF" })?codigo=" + document.getElementById("animal").value; } $("#proprietario").change(function () { var dados = $(this).val().toString(); var options = ''; if (dados != 0) { $.ajax({ url: '@Url.Action("RetornaAnimais", "Principal")', type: 'POST', dataType: 'json', data: { codigo: dados }, success: function (result) { options += '<option value="" selected></option>'; $.each(result, function (key, val) { options += '<option value="' + val["id"] + '">' + val["nome"] + '</option>'; }); $("#animal").html(options); } }); } else { console.log(options) $("#animal").html(options); } }).change(); $("#Principio").change(function () { var dados = $(this).val().toString(); var options = ""; if (dados != 0) { $.ajax({ url: '@Url.Action("RetornaProduto", "Principal")', type: 'POST', dataType: 'json', data: { codigo: dados }, success: function (result) { $("#Med_Produto").html(''); $("#cod_Prod_Serv").html(''); $("#Med_Produto").append($('<option></option>').val("").html("Selecione")); $.each(result, function (value, option) { $("#Med_Produto").append($('<option></option>').val(option.id).html(option.nome_comercial)); }); $("#Med_Produto").focus(); } }); } else { console.log(options) $("#Med_Produto").html(options); } }); $("#Med_Produto").change(function () { var dados = $(this).val().toString(); var options = ""; if (dados != 0) { $.ajax({ url: '@Url.Action("RetornaProdutoServico", "Principal")', type: 'POST', dataType: 'json', data: { codigo: dados }, success: function (result) { $("#cod_Prod_Serv").html(''); $("#cod_Prod_Serv").append($('<option></option>').val("").html("Selecione")); options += '<option value="" selected></option>'; $.each(result, function (value, option) { $("#cod_Prod_Serv").append($('<option></option>').val(option.id).html(option.PRODUTO)); }); $("#cod_Prod_Serv").focus(); } }); } else { console.log(options) $("#cod_Prod_Serv").html(options); } }); $("#cod_Prod_Serv").change(function () { var ServiceUrl = "/Programa_Imunizacao/Principal/DadosProduto?id=" + $(this).val(); var content = ''; $.support.cors = true; $.ajax({ type: 'POST', url: ServiceUrl, async: true, cache: false, crossDomain: true, contentType: "application/json; charset=utf-8", dataType: 'json', error: function (xhr, err) { }, success: function (result, status) { console.log(result); var dtFabricacao = new Date(parseInt(result[0].data_Fabricacao.substr(6))); var dtVencimento = new Date(parseInt(result[0].data_Vencimento.substr(6))); $('#nomeProdServ').val(result[0].nome); $('#lote_Partida').val(result[0].lote_Partida); $('#data_Fabricacao').val(DataFormatada(dtFabricacao)); $('#data_Vencimento').val(DataFormatada(dtVencimento)); $('#cod_Med_Produto').val(result[0].cod_Med_Produto); } }); }); $('#botao_proprietario').click(function () { var left = (window.screen.width / 2) - 260; var top = (window.screen.height / 2) - 300; var w = window.open('/Proprietario_/Create', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=500,left = ' + left + ',top = ' + top + ''); }); $('#botao_animal').click(function () { var left = (window.screen.width / 2) - 260; var top = (window.screen.height / 2) - 300; var w = window.open('/AnimalCompanhia_/Create', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=500,left = ' + left + ',top = ' + top + ''); }); $('#botao_peso').click(function () { var left = (window.screen.width / 2) - 260; var top = (window.screen.height / 2) - 300; var w = window.open('/Programa_Nutricao/Principal/Create', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=500,left = ' + left + ',top = ' + top + ''); }); $('#botao_farmacia').click(function () { var left = (window.screen.width / 2) - 260; var top = (window.screen.height / 2) - 300; var w = window.open('/Produtos_Servicos_/Create', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=500,left = ' + left + ',top = ' + top + ''); }); function ToJavaScriptDate(value) { var pattern = /Date\(([^)]+)\)/; var results = pattern.exec(value); return new Date(parseFloat(results[1])); } </script>
-
Da lista de nulos que voce mostou na imagem eu só achei 2 campos:
@Html.JQueryUI().Datepicker("data_reforco", null, new { @class = "form-control" })
e
<input type="text" id="cod_Med_Produto" name="cod_Med_Produto" />
esse ultimo existe em outra parte
@Html.DropDownList("cod_Med_Produto", null, String.Empty, new { id = "Med_Produto", @class = "form-control" })
Voce tem certeza que @Html.JQueryUI().Datepicker renderiza um controle com o id="data_reforco" ?
Todos os campos nao definidos (sem name ou id) na sua view vao retornar nulo...
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
-
William,
ainda estou errando em algo, pois mesmos inserindo o name, os campos retornam null:
@Html.DropDownList("cod_Med_Principio_Ativo", null, String.Empty, new { id = "Principio", name="cod_Med_Principio_Ativo", @class = "form-control" }) <input type="text" id="cod_Med_Produto" name="cod_Med_Produto" /> <input type="text" id="nomeProdServ" name="Produto_Servico.nome" /> @Html.TextBoxFor(model => model.Produto_Servico.lote_Partida, new { id = "lote_Partida", name = "Produto_Servico[0].lote_Partida" }) @Html.TextBoxFor(model => model.Produto_Servico.data_Fabricacao, new { id = "data_Fabricacao", name = "Produto_Servico[0].data_Fabricacao" }) @Html.TextBoxFor(model => model.Produto_Servico.data_Vencimento, new { id = "data_Vencimento", name = "Produto_Servico[0].data_Vencimento" }) @Html.JQueryUI().Datepicker("data_reforco", null, new { name="data_reforco", @class = "form-control" }) @Html.TextAreaFor(model => model.local_Aplicacao, new { name = "local_Aplicacao", @class = "form-control" }) @Html.TextAreaFor(model => model.observacao, new { name = "observacao", @class = "form-control" })
O estranho é que os valores do form abaixo retornam null:
<form id="formprod" name="formprod" action="#" method="post">
- Editado Wilson Boris sábado, 5 de dezembro de 2015 00:23 negrito
-
Ops, quase rolou...
O local para verificar se o valor é null não é onde eu fiz o break, mas no foreach.
O formulário foi salvo, porém no banco os campos abaixo foram salvos null:
@Html.DropDownList("cod_Med_Principio_Ativo", null, String.Empty, new { id = "Principio", name="cod_Med_Principio_Ativo", @class = "form-control" })
@Html. @Html.TextAreaFor(model => model.observacao, new { id = "observacao", name = "observacao", @class = "form-control" })
-
Mas porque voce define o ID para esse campo?
@Html.DropDownList("cod_Med_Principio_Ativo", null, String.Empty, new { id = "Principio", name="cod_Med_Principio_Ativo", @class = "form-control" })
No momento do post voce envia um campo Principio ao inves de cod_Med_Principio_Ativo . Por isso cod_Med_Principio_Ativo esta nulo.
Para o outro campo nao ha um motivo claro.
att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
-
Desculpe a demora, rsrs
Eu alterei para a linha abaixo, mas mesmo assim esse campos salvou como null no banco:
@Html.DropDownList("cod_Med_Principio_Ativo", null, String.Empty, new { id = "cod_Med_Principio_Ativo", name = "cod_Med_Principio_Ativo", @class = "form-control" })