23 messaggi dal 27 novembre 2015
Salve,
nel mio progetto ho un controller (GestioneController), con la seguente action:
//Creazione PDF 
        public ActionResult PDF(int id)
        {
            RapportinoPDF RapportinoPDF = new RapportinoPDF();

            RapportiniEntities1 dc = new RapportiniEntities1();

            TesteDocumenti TestaMetodo = dc.TesteDocumenti.Where(x => x.PROGRESSIVO.Equals(id)).FirstOrDefault();

            // Associo i dati della tabella all'oggetto appena creato
                RapportinoPDF.codice_cliente = TestaMetodo.CODCLIFOR;
                // Cerco tramite i query i dati anagrafici del cliente
                RAP_CLIENTI Cliente = dc.RAP_CLIENTI.Where(x => x.Codice.Equals(RapportinoPDF.codice_cliente)).FirstOrDefault();
            // Dati sul cliente
                RapportinoPDF.ragione_sociale = Cliente.ragione_sociale_1;
                RapportinoPDF.indirizzo = Cliente.indirizzo;
                RapportinoPDF.cap = Cliente.cap;
                RapportinoPDF.citta = Cliente.citta;
                RapportinoPDF.provincia = Cliente.provincia;
                RapportinoPDF.telefono = Cliente.telefono;
                if (RapportinoPDF.telefono == "")
                    RapportinoPDF.telefono = "Non specificato";
                RapportinoPDF.fax = Cliente.Fax;
                if (RapportinoPDF.fax == "")
                    RapportinoPDF.fax = "Non specificato";
                RapportinoPDF.email = Cliente.Email;
                RapportinoPDF.partita_iva = Cliente.partita_iva;
                // VA MESSO TELEFONO E FAX
                // Cerco tramite i query i dati anagrafici della destinazione
                RapportinoPDF.codice_destinazione = Convert.ToString(TestaMetodo.DESTINAZIONE);
                if(RapportinoPDF.codice_destinazione == null)
                {
                // Dati sulla destinazione
                RapportinoPDF.codice_destinazione = "0";
                RapportinoPDF.ragione_sociale_2 = RapportinoPDF.ragione_sociale;
                RapportinoPDF.indirizzo_2 = RapportinoPDF.indirizzo;
                RapportinoPDF.cap_2 = RapportinoPDF.cap;
                RapportinoPDF.citta_2 = RapportinoPDF.citta;
                RapportinoPDF.provincia_2 = RapportinoPDF.provincia;
                RapportinoPDF.telefono_2 = RapportinoPDF.telefono;
                RapportinoPDF.fax_2 = RapportinoPDF.fax;
                }
                else
                {
                    RAP_DESTINAZIONI Destinazione = dc.RAP_DESTINAZIONI.Where(x => x.codice_cliente.Equals(RapportinoPDF.codice_cliente)
                                                                            && x.codice_destinazione.Equals(RapportinoPDF.codice_destinazione)).
                                                                            FirstOrDefault();
                // Dati sulla destinazione
                    RapportinoPDF.ragione_sociale_2 = Destinazione.ragione_sociale;
                    RapportinoPDF.indirizzo_2 = Destinazione.indirizzo;
                    RapportinoPDF.cap_2 = Destinazione.cap;
                    RapportinoPDF.citta_2 = Destinazione.citta;
                    RapportinoPDF.provincia_2 = Destinazione.provincia;
                    RapportinoPDF.telefono_2 = Destinazione.telefono;
                    if (RapportinoPDF.telefono_2 == "")
                        RapportinoPDF.telefono_2 = "Non specificato";
                    RapportinoPDF.fax_2 = Destinazione.Fax;
                    if (RapportinoPDF.fax_2 == "")
                        RapportinoPDF.fax_2 = "Non specificato";
                }

                //Dati vari
                RapportinoPDF.data_inserimento = (DateTime)TestaMetodo.DATADOC;

                RapportinoPDF.codice_pagamento = TestaMetodo.CODPAGAMENTO;
                RAP_Pagamenti Pagamento = dc.RAP_Pagamenti.Where(x => x.Codice.Equals(RapportinoPDF.codice_pagamento)).FirstOrDefault();
                RapportinoPDF.descrizione_pagamento = Pagamento.Descrizione;
                RapportinoPDF.codice_operatore = TestaMetodo.UTENTEMODIFICA;
                if (TestaMetodo.TIPODOC == "INT")
                RapportinoPDF.tipo_inserimento = "Normale";
                /*else if (TestaMetodo.TIPODOC == "G")
                    Rapportino.tipo_inserimento = "Garanzia";
                else
                    Rapportino.tipo_inserimento = "Pacchetto ore";*/
                RapportinoPDF.note = TestaMetodo.ANNOTAZIONI;

                RAP_TESTA Testa = dc.RAP_TESTA.Where(x => x.id_testa_metodo.Equals(TestaMetodo.PROGRESSIVO)).FirstOrDefault();
                RapportinoPDF.firma_cliente = Testa.firma_cliente;

                IQueryable<STE_Scadenze_Result> TabScadenze = db.STE_Scadenze(Cliente.Codice, TestaMetodo.CODPAGAMENTO, TestaMetodo.TOTIMPOSTAEURO, TestaMetodo.DATADOC);

                RapportinoPDF.scadenza = new List<string>();
                foreach (var item in TabScadenze)
                    RapportinoPDF.scadenza.Add((item.Scadenza == null) ? string.Empty : Convert.ToDateTime(item.Scadenza).ToString("dd/MM/yyyy") + " - " + item.Importo);

                // Instanzio un nuovo oggetto contenente i dati delle righe
                List<RigheDocumenti> Righe = dc.RigheDocumenti.Where(x => x.IDTESTA.Equals(TestaMetodo.PROGRESSIVO)).ToList();

                // Instanzio oggetti liste
                RapportinoPDF.tipologia_riga = new List<string>();
                RapportinoPDF.codice_articolo = new List<string>();
                RapportinoPDF.descrizione_articolo = new List<string>();
                RapportinoPDF.unita_misura = new List<string>();
                RapportinoPDF.quantita = new List<string>();
                RapportinoPDF.prezzo_lordo = new List<string>();
                RapportinoPDF.prezzo_netto = new List<string>();
                RapportinoPDF.sconto = new List<string>();
                RapportinoPDF.iva = new List<string>();

                // Loop nella lista delle righe
                foreach (var item in Righe)
                {
                    if (item.TIPORIGA == "N")
                        RapportinoPDF.tipologia_riga.Add("Normale");
                    else
                        RapportinoPDF.tipologia_riga.Add("Descrizione");

                    RapportinoPDF.codice_articolo.Add(item.CODART);
                    RapportinoPDF.descrizione_articolo.Add(item.DESCRIZIONEART);
                    RapportinoPDF.unita_misura.Add(item.UMGEST);
                    if (item.TIPORIGA == "N")
                    {
                        RapportinoPDF.quantita.Add(item.QTAGEST.ToString("f2"));
                        RapportinoPDF.prezzo_lordo.Add(item.PREZZOUNITLORDOEURO.ToString("f2"));
                        RapportinoPDF.prezzo_netto.Add(item.PREZZOUNITNETTOEURO.ToString("f2"));
                        RapportinoPDF.sconto.Add(item.SCONTORIGA.ToString("f2"));
                        RapportinoPDF.iva.Add(item.CODIVA.Value.ToString("f2"));
                    }
                    else
                    {
                        RapportinoPDF.quantita.Add(item.QTAGEST.ToString());
                        RapportinoPDF.prezzo_lordo.Add(item.PREZZOUNITLORDOEURO.ToString());
                        RapportinoPDF.prezzo_netto.Add(item.PREZZOUNITNETTOEURO.ToString());
                        RapportinoPDF.sconto.Add(item.SCONTORIGA.ToString());
                    }

                }

            return new Rotativa.ActionAsPdf("Print", RapportinoPDF);
        }


L'action che viene richiamata è Print ed è la seguente:

[HttpGet]
        public ActionResult Print()
        {
            return View(RapportinoPDF);
        }


Avendo come view la seguente, perchè mi da errore non gestito a livello si system.exception?

@model Nuova.Models.RapportinoPDF
@{
    // Instanzio nuovo oggetto per sessione utente corrente
    Nuova.Models.AdminSession AdminSession = new Nuova.Models.AdminSession();

    // Assoccio all'oggetto le informazioni presenti nella variabile di sessione
    AdminSession = (Nuova.Models.AdminSession)Session["AdminSession"];

    ViewBag.Title = "PDF Rapportino";

    decimal Prezzo_Lordo_Singolo, Costo_IVA_Singolo, Prezzo_Netto_Singolo, Prezzo_Lordo_Totale, Costo_IVA_Totale, Prezzo_Netto_Totale, IVA, Sconto_Singolo;
    Prezzo_Lordo_Totale = 0;
    Costo_IVA_Totale = 0;
    Prezzo_Netto_Totale = 0;
    IVA = 0;
}
<div class="row">
    <div class="col-md-6">
        <div class="panel panel-info">
            <div class="panel-heading"><b>Cliente</b></div>
            <div class="panel-body">
                <div class="col-md-12 table-responsive">
                    <table class="table dati_cliente">
                        <tbody>
                            <tr>
                                <td>@Model.codice_cliente - @Model.ragione_sociale</td>
                            </tr>
                            <tr>
                                <td>@Model.indirizzo</td>
                            </tr>
                            <tr>
                                <td>@Model.cap @Model.citta - @Model.provincia</td>
                            </tr>
                            <tr>
                                <td><b>Tel</b> @Model.telefono - <b>Fax</b> @Model.fax</td>
                            </tr>
                            <tr>
                                <td><b>P.IVA</b> @Model.partita_iva</td>
                            </tr>
                            <tr>
                                <td>@Model.email</td>
                            </tr>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
    <div class="col-md-6">
        <div class="panel panel-info">
            <div class="panel-heading"><b>Destinazione</b></div>
            <div class="panel-body">
                <div class="col-md-12 table-responsive">
                    <table class="table dati_cliente">
                        <tbody>
                            <tr>
                                <td>@Model.codice_destinazione - @Model.ragione_sociale_2</td>
                            </tr>
                            <tr>
                                <td>@Model.indirizzo_2</td>
                            </tr>
                            <tr>
                                <td>@Model.cap_2 @Model.citta_2 - @Model.provincia_2</td>
                            </tr>
                            <tr>
                                <td><b>Tel</b> @Model.telefono_2 - <b>Fax</b> @Model.fax_2</td>
                            </tr>
                            <tr>
                                <td style="opacity:0;">0</td>
                            </tr>
                            <tr>
                                <td style="opacity:0;">0</td>
                            </tr>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
</div>
<div class="row">
    <div class="col-md-3">
        <div class="panel panel-info">
            <div class="panel-heading"><b>Data</b></div>
            <div class="panel-body">
                <dl>
                    <dd>@Model.data_inserimento.ToString("dd/MM/yyyy")</dd>
                </dl>
            </div>
        </div>
    </div>
    <div class="col-md-3">
        <div class="panel panel-info">
            <div class="panel-heading"><b>Pagamento</b></div>
            <div class="panel-body">
                <dl>
                    <dd>@Model.descrizione_pagamento</dd>
                </dl>
            </div>
        </div>
    </div>
    <div class="col-md-3">
        <div class="panel panel-info">
            <div class="panel-heading"><b>Operatore</b></div>
            <div class="panel-body">
                <dl>
                    <dd>@Model.codice_operatore</dd>
                </dl>
            </div>
        </div>
    </div>
    <div class="col-md-3">
        <div class="panel panel-info">
            <div class="panel-heading"><b>Tipologia</b></div>
            <div class="panel-body">
                <dl>
                    <dd>@Model.tipo_inserimento</dd>
                </dl>
            </div>
        </div>
    </div>
</div>
<div class="row">
    <div class="col-md-12">
        <div class="panel panel-info">
            <div class="panel-heading"><b>Note</b></div>
            <div class="panel-body">
                <div class="col-md-12">
                    <p>
                        @Model.note
                    </p>
                </div>
            </div>
        </div>
    </div>
</div>
<div class="row">
    <div class="col-md-12">
        <div class="panel panel-info">
            <div class="panel-heading"><b>Righe</b></div>
            <div class="panel-body">
                <div class="col-md-12 table-responsive">
                    <table class="table table-striped table-hover">
                        <thead>
                            <tr>
                                <th>Tipologia</th>
                                <th>Articolo</th>
                                <th>Descrizione</th>
                                <th>UM</th>
                                <th>Quantità</th>
                                <th>Prezzo</th>
                                <th>Sconto</th>
                            </tr>
                        </thead>
                        <tbody>
                            @for (int i = 0; i < Model.tipologia_riga.Count(); i++)
                            {
                                if (Model.tipologia_riga[i] == "Normale")
                                {
                                    Prezzo_Lordo_Singolo = 0;
                                    Prezzo_Netto_Singolo = 0;
                                    Costo_IVA_Singolo = 0;

                                    <tr>
                                        <td>@Model.tipologia_riga[i]</td>
                                        <td>@Model.codice_articolo[i]</td>
                                        <td>@Model.descrizione_articolo[i]</td>
                                        <td>@Model.unita_misura[i]</td>
                                        <td>@Model.quantita[i]</td>
                                        @if (Model.prezzo_lordo[i] == "")
                                        {
                                            <td></td>
                                            <td></td>
                                        }
                                        else
                                        {
                                            IVA = Convert.ToDecimal(Model.iva[i]);

                                            Prezzo_Lordo_Singolo = Convert.ToDecimal(Model.prezzo_lordo[i]);
                                            Sconto_Singolo = (Prezzo_Lordo_Singolo * Convert.ToDecimal(Model.sconto[i])) / 100;
                                            Costo_IVA_Singolo = (Convert.ToDecimal(Model.prezzo_netto[i]) * IVA) / 100;
                                            Prezzo_Netto_Singolo = Convert.ToDecimal(Model.prezzo_netto[i]) + Costo_IVA_Singolo;

                                            Prezzo_Lordo_Totale += ((Prezzo_Lordo_Singolo - Sconto_Singolo) * Convert.ToDecimal(Model.quantita[i]));
                                            Costo_IVA_Totale += (Costo_IVA_Singolo * Convert.ToDecimal(Model.quantita[i]));
                                            Prezzo_Netto_Totale += (Prezzo_Netto_Singolo * Convert.ToDecimal(Model.quantita[i]));

                                            <td>
                                                ¤ @Model.prezzo_lordo[i]
                                            </td>
                                            <td>
                                                @Model.sconto[i] %
                                            </td>
                                        }
                                    </tr>
                                }
                                else
                                {
                                    <tr>
                                        <td>@Model.tipologia_riga[i]</td>
                                        <td></td>
                                        <td>@Model.descrizione_articolo[i]</td>
                                        <td></td>
                                        <td></td>
                                        <td></td>
                                        <td></td>
                                    </tr>
                                }
                            }
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
</div>
<div class="row">
    <div class="col-md-3">
        <div class="panel panel-info">
            <div class="panel-heading"><b>Imponibile</b></div>
            <div class="panel-body">
                <dl>
                    <dd>¤ @Prezzo_Lordo_Totale.ToString("f2")</dd>
                </dl>
            </div>
        </div>
    </div>
    <div class="col-md-3">
        <div class="panel panel-info">
            <div class="panel-heading"><b>Aliquota</b></div>
            <div class="panel-body">
                <dl>
                    <dd>@IVA %</dd>
                </dl>
            </div>
        </div>
    </div>
    <div class="col-md-3">
        <div class="panel panel-info">
            <div class="panel-heading"><b>IVA</b></div>
            <div class="panel-body">
                <dl>
                    <dd>¤ @Costo_IVA_Totale.ToString("f2")</dd>
                </dl>
            </div>
        </div>
    </div>
    <div class="col-md-3">
        <div class="panel panel-info">
            <div class="panel-heading"><b>Prezzo finale</b></div>
            <div class="panel-body">
                <dl>
                    <dd>¤ @Prezzo_Netto_Totale.ToString("f2")</dd>
                </dl>
            </div>
        </div>
    </div>
</div>
<div class="row">
    <div class="col-md-12">
        <div class="panel panel-info">
            <div class="panel-heading"><b>Scadenze</b></div>
            <div class="panel-body">
                <div class="col-md-12">
                    <p>
                        @for (int i = 0; i < Model.scadenza.Count(); i++)
                        {
                            @Model.scadenza[i]
                            <br />
                        }
                    </p>
                </div>
            </div>
        </div>
    </div>
</div>
<div class="row">
    <div class="col-md-12">
        <div class="panel panel-info">
            <div class="panel-heading"><b>Firma cliente</b></div>
            <div class="panel-body">
                <div class="col-md-12">
                    <img class="img-responsive" src="data:image/gif;base64,@Model.firma_cliente" />
                </div>
            </div>
        </div>
    </div>
</div>


Grazie mille :3
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
potresti indicare l'esatta riga in cui si sta verificando l'eccezione?

Visual Studio blocca l'esecuzione su quella riga quando lanci l'applicazione in debug.

ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.