none
aproveitando código RRS feed

  • Pergunta

  • Pessoal estou alterando uma aplicação asp.net para asp.net mvc.

    não estou conseguindo executar o procedimento abaixo no mvc.

    codigo no asp.net

     private void criarpdf()
            {
                string idobr;
                idobr = cboobreiro.SelectedValue;
                Session["idobr"] = idobr;
    
                string nomeobr = null;
                nomeobr = cboobreiro.SelectedItem.Text;
    
                string switches = "";
                switches += "--print-media-type ";
                switches += "--margin-top 10mm --margin-bottom 10mm --margin-right 10mm --margin-left 10mm ";
                switches += "--page-size A4 ";
    
                Uri strurl = Request.Url;
                string _caminhohtml = Request.Url.GetLeftPart(UriPartial.Authority) + "/relatorios/fichasimples.aspx?OBRID=" + cboobreiro.SelectedValue;
                //CType(Session["idobr"].ToString, String)
                string _caminhopdf = Server.MapPath("./fotos/fichasimples.pdf");
                Process processo = new Process();
                string strCaminho = Server.MapPath("~/wkhtmltopdf/wkhtmltopdf.exe");
                processo.StartInfo.FileName = strCaminho;
                processo.StartInfo.Arguments = switches + " " + _caminhohtml + " " + _caminhopdf;
                Process.Start(processo.StartInfo).WaitForExit();
                Response.Redirect("fotos/fichasimples.pdf");
            }

    como posso aproveitar esse codigo no asp.net mvc

    como chamo esse procedimento em botão no mvc?


    Julierme Felix - Aprendiz

    sexta-feira, 27 de maio de 2016 13:42

Todas as Respostas

  • Vc pode fazer algo parecido com isso:

    public ActionResult ExportPDF()
    {
                MemoryStream mstream = aqui vc abre seu arquivo.... (eu usei memorystream mas vc pode usar filestream...
                byte[] filedata = mstream.ToArray();
                string contentType = "application/force-download";//"application/vnd.ms-excel";
    
                var cd = new System.Net.Mime.ContentDisposition
                {
                    FileName = filename,
                    Inline = true,
                };
    
                Response.AppendHeader("Content-Disposition", cd.ToString());
    
                return File(filedata, contentType);
    }


    Att. Andre de Mattos Ferraz - www.iamferraz.com.br - http://mbsy.co/ldecrespigny/19022985


    sexta-feira, 27 de maio de 2016 14:53
  • consegui usar o mesmo código como segue abaixo, porem não estou conseguindo chamar pelo botão.

    codigo no arquivo fichacontroller.cs

        
     public void criarpdf(int obrID)
              {
                  Session["idobr"] = obrID;
    
                  string switches = "";
                  switches += "--print-media-type ";
                  switches += "--margin-top 10mm --margin-bottom 10mm --margin-right 10mm --margin-left 10mm ";
                  switches += "--page-size A4 ";
    
                  Uri strurl = Request.Url;
                  string _caminhohtml = Request.Url.GetLeftPart(UriPartial.Authority) + "/Relatorios/fichasimples.aspx?OBRID=" +obrID;
    
                  string _caminhopdf = Server.MapPath("~/Relatorios/fotos/fichasimples.pdf");
                  Process processo = new Process();
                  string strCaminho = Server.MapPath("~/wkhtmltopdf/wkhtmltopdf.exe");
                  processo.StartInfo.FileName = strCaminho;
                  processo.StartInfo.Arguments = switches + " " + _caminhohtml + " " + _caminhopdf;
                  Process.Start(processo.StartInfo).WaitForExit();
                  Response.Redirect("/Relatorios/fotos/fichasimples.pdf");
    
    
              }

    codigo no arquivo ficha.cshtml

    os dados vem de dropdownlist

       @Html.DropDownList("obrei", Enumerable.Empty<SelectListItem>(), "Selecione o Obreiro", new { @disabled = "disabled", @class = "form-control" })
    dados do botão que usarei para gerar o pdf
    <button id="ficha" value="criarpdf" name="criarpdf" type="submit" class="btn btn-success" />
                            @Texts.textoigreja.ficha

    script usado para pegar o id do dropdownlist e jogar na função

    <script type="text/javascript">
        $(document).ready(function () {
            $("#obrei").click(function () {
                $.ajax({
                    type: "POST",
                    url: "/Ficha/criarpdf",
                    data: { obrID: $(this).val() },
                    success: function (data) {
                        var options = "";
                        $.each(data, function () {
                            options += '<option value="' + this.id + '"></option>';
                        });
                        $("#criarpdf").html(options);
                    }
                });
            });
        });
    </script>

    o que esta acontecendo é que quando seleciono um item no dropdownlist ele já gera o pdf, e quando clico no botão que seria o correto não acontece nada.

    grato

     
                     



    Julierme Felix - Aprendiz

    sexta-feira, 27 de maio de 2016 16:49
  • Aqui tem que ser #ficha ao invés de #obrei.

    $("#obrei").click(function () {


    Att. Andre de Mattos Ferraz - www.iamferraz.com.br - http://mbsy.co/ldecrespigny/19022985


    sexta-feira, 27 de maio de 2016 16:58
  • deve ser algum erro ao criar o botão ou no script, pois não funciona.

    Julierme Felix - Aprendiz

    sexta-feira, 27 de maio de 2016 17:27
  • Não entendi... Seu script ta errado, você colocou a chamada ajax no click do dropdown...

    <script type="text/javascript"> $(document).ready(function () { $("#obrei").click(function () {

    ...

    É soh mudar isso pra :

    <script type="text/javascript"> $(document).ready(function () { $("#ficha").click(function () {

    ...



    Att. Andre de Mattos Ferraz - www.iamferraz.com.br - http://mbsy.co/ldecrespigny/19022985

    sexta-feira, 27 de maio de 2016 19:13
  • Já tinha feito anteriormente e não funcionou.

    Julierme Felix - Aprendiz

    sexta-feira, 27 de maio de 2016 22:44
  • fiz uma alteração no codigo do botão

     <a href="@Url.Action("criarpdf", "Ficha")" />
                        <button id="ficha" type="button" value="ficha de obreiro" name="ficha" class="btn btn-success" >
                            @Texts.textoigreja.ficha

    mas agora o botão esta executando, mas não estou conseguindo passar o valor do dropdwnlist para executar o procedimento.

    codigo do script também alterei

    <script type="text/javascript">
        $(document).ready(function () {
            $("#ficha").click(function (event) {
                $.ajax({
                    type: "button",
                    url: "/Ficha/criarpdf",
                    data: { obrID: $(this).val() },
                    success: function (data) {
                        var options = "";
                        $.each(data, function () {
                            options += '<option value="' + this.id + '"></option>';
                        });
                        $("#criarpdf").html(options);
                       }
               });
                $(location).attr("href", "/Relatorios/fotos/fichasimples.pdf");
            });
           
        });
     
    </script>

    essa linha tem que receber o id vindo do dropdownlist

     options += '<option value="' + this.id + '"></option>';


    Julierme Felix - Aprendiz

    sexta-feira, 27 de maio de 2016 23:24
  • Julierme,

    Para pegar o item selecionado no dropdownlist basta fazer isso:

    $('#dropDownId').val();

    Para pegar o valor que ta no dropdown:

    $('#dropDownId :selected').text();

    Só pra esclarecer, nesse ponto:

    $("#ficha").click(function (event) {
                $.ajax({
                    type: "button",
                    url: "/Ficha/criarpdf",
                    data: { obrID: $(this).val() },
    ...

    $(this).val() é o valor do botão...


    Att. Andre de Mattos Ferraz - www.iamferraz.com.br - http://mbsy.co/ldecrespigny/19022985

    segunda-feira, 30 de maio de 2016 11:22
  • voce pode criar um metodo JsonResult na sua controller e colocar esse codigo dentro. 

    na sua view , vc chama esse json result via ajax passando na url do ajax o nome do controler de onde esta seu metodo e nome do seu metodo jsonresult.

    quarta-feira, 8 de junho de 2016 13:30