При загрузке изображений в ipad, как установить его для открытия в новой вкладке вместо текущей? [Дубликат]

Строка ошибки «Ссылка на объект, не установленная на экземпляр объекта.» указывает, что вы не назначили экземпляр объекта объектной ссылке, и все же вы получаете доступ к свойствам / методам этого объекта.

например: скажем, у вас есть класс под названием myClass и он содержит одно свойство prop1.

public Class myClass
{
   public int prop1 {get;set;}
}

Теперь вы получаете доступ к этому prop1 в каком-то другом классе, как показано ниже:

public class Demo
{
     public void testMethod()
     {
        myClass ref = null;
        ref.prop1 = 1;  //This line throws error
     }
}

выше строки выдает ошибку, потому что ссылка класса myClass объявлена, но не создана, или экземпляр объекта не назначается referecne этого класса.

Чтобы исправить это, вам нужно создать экземпляр (присвоить объект ссылке на этот класс).

public class Demo
{
     public void testMethod()
     {
        myClass ref = null;
        ref = new myClass();
        ref.prop1 = 1;  
     }
}
12
задан Bobrovsky 28 November 2011 в 17:56
поделиться

7 ответов

вы можете вернуть FileResult из своего действия MVC.

********************* Действие MVC ************

    public FileResult OpenPDF(parameters)
    {
       //code to fetch your pdf byte array
       return File(pdfBytes, "application/pdf");
    }

************** js **************

Используйте formpost для отправки ваших данных в действие

    var inputTag = '<input name="paramName" type="text" value="' + payloadString + '">';
    var form = document.createElement("form");
    jQuery(form).attr("id", "pdf-form").attr("name", "pdf-form").attr("class", "pdf-form").attr("target", "_blank");
    jQuery(form).attr("action", "/Controller/OpenPDF").attr("method", "post").attr("enctype", "multipart/form-data");
    jQuery(form).append(inputTag);
    document.body.appendChild(form);
    form.submit();
    document.body.removeChild(form);
    return false;

Вам нужно создать форму для публикации ваших данных, добавить ее в свой дом, опубликовать свои данные и удалить форму вашего тела документа.

Однако сообщение формы не будет отправлять данные в новую вкладку только в браузере EDGE. Но запрос получения работает, поскольку он просто открывает новую вкладку с URL-адресом, содержащим строку запроса для ваших параметров действия.

0
ответ дан Harish Mashetty 27 August 2018 в 21:35
поделиться

Вместо того, чтобы загружать поток в массив байтов и записывать его в поток ответов, вы должны посмотреть на HttpResponse.TransmitFile

Response.ContentType = "Application/pdf";
Response.TransmitFile(pathtofile);

. Если вы хотите, чтобы PDF для открытия в новом окне вам нужно будет открыть страницу загрузки в новом окне, например, например:

<a href="viewpdf.aspx" target="_blank">View PDF</a>
15
ответ дан janzi 27 August 2018 в 21:35
поделиться

это может помочь

Response.Write("<script>");
Response.Write("window.open('../Inventory/pages/printableads.pdf', '_newtab');");
Response.Write("</script>");
3
ответ дан Karthik 27 August 2018 в 21:35
поделиться

Здесь я использую dll iTextSharp для создания файла PDF. Я хочу открыть файл PDF вместо его загрузки. Поэтому я использую код ниже, который отлично работает для меня. Теперь файл pdf открывается в браузере, теперь dowloading

        Document pdfDoc = new Document(PageSize.A4, 25, 10, 25, 10);
        PdfWriter pdfWriter = PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
        pdfDoc.Open();
        Paragraph Text = new Paragraph("Hi , This is Test Content");
        pdfDoc.Add(Text);
        pdfWriter.CloseStream = false;
        pdfDoc.Close();
        Response.Buffer = true;
        Response.ContentType = "application/pdf";
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.End();

Если вы хотите загрузить файл, добавьте строку ниже, после этого Response.ContentType = "application / pdf";

Response.AddHeader("content-disposition", "attachment;filename=Example.pdf");   
0
ответ дан Kashyap Diwan 27 August 2018 в 21:35
поделиться
Response.ContentType = contentType;
HttpContext.Current.Response.AddHeader("Content-Disposition", "inline; filename=" + fileName);
Response.BinaryWrite(fileContent);

И

<asp:LinkButton OnClientClick="openInNewTab();" OnClick="CodeBehindMethod".../>

В javaScript:

<script type="text/javascript">
    function openInNewTab() {
        window.document.forms[0].target = '_blank'; 
        setTimeout(function () { window.document.forms[0].target = ''; }, 0);
    }
</script>

Позаботьтесь о сбросе цели, в противном случае все остальные вызовы, такие как Response.Redirect, откроются на новой вкладке , что может быть не то, что вы хотите.

5
ответ дан Nina 27 August 2018 в 21:35
поделиться

Используйте этот код. Это работает как чемпион.

Process process = new Process();
process.StartInfo.UseShellExecute = true;
process.StartInfo.FileName = outputPdfFile;
process.Start();
-4
ответ дан Polo Guy 27 August 2018 в 21:35
поделиться

Вы должны создать либо другую страницу, либо общий обработчик с кодом для создания вашего pdf. Затем это событие активируется, и человек перенаправляется на эту страницу.

1
ответ дан Yetimandaddy 27 August 2018 в 21:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: