首页 > 解决方案 > 如何在 asp.net 中创建下载按钮?

问题描述

这是 Html 源代码。代码在 runat 服务器中,但也出现了该错误。

<form id="form1" runat="server">
<asp:Panel ID="Panel1" runat="server" Visible="False" Height="302px">
            <center>
                <table>
                    <tr>
                        <td>
                            PERSONAL INFORMATION
                        </td>
                    </tr>
                    <tr>
                        <td>First Name:
                            <asp:Label ID="fname" runat="server"></asp:Label>
                            </br>
                            Last Name:
                            <asp:Label ID="lname" runat="server" ></asp:Label>
                            </br>
                            Age:
                            <asp:Label ID="age" runat="server" ></asp:Label>
                            </br>
                            Date od Birth:
                            <asp:Label ID="dob" runat="server" ></asp:Label>
                            </br>
                            Address:
                            <asp:Label ID="add" runat="server" ></asp:Label>
                            </br>
                            Birth Place:
                            <asp:Label ID="bp" runat="server" ></asp:Label>
                            </br>
                            Mobile No.:
                            <asp:Label ID="mn" runat="server" ></asp:Label>
                        </td>
                    </tr>
                    </table>
                
                <asp:Button ID="download" runat="server" OnClick="download_Click" Text="DOWNLOAD" />
                 
            </center>
        </asp:Panel>
    </form>

我创建了一个下载按钮并运行该按钮的此代码,但我资助了此错误“必须将'Button'类型的控件'下载'放在带有runat = server的表单标签内。”。这是我的带有code.i的类库创建一个数据库以在网页中添加详细信息。最后我把它转换成pdf。

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.text.html.simpleparser;
using System.Web;
using System.Web.UI;
using System.Web.Security;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Web.UI.WebControls.WebParts;
using System.Collections;
using System.Web.UI.HtmlControls;
using System.IO;

    protected void download_Click(object sender, EventArgs e)
            {
                Response.ContentType = "application/pdf";
                Response.AddHeader("content-disposition", "attachment;filename=DataSet.pdf");
                Response.Cache.SetCacheability(HttpCacheability.NoCache);
                StringWriter sw = new StringWriter();
                HtmlTextWriter hw = new HtmlTextWriter(sw);
                Panel1.RenderControl(hw);
                StringReader sr = new StringReader(sw.ToString());
                Document pdfDoc = new Document(PageSize.A4, 10, 10, 0, 0);
                HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
                PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
                pdfDoc.Open();
                htmlparser.Parse(sr);
                pdfDoc.Close();
                Response.Write(pdfDoc);
                Response.End();
            }

标签: c#.net

解决方案


您有一个错字,<form>需要在 ASP:Panel 之外,并且像错误消息状态一样,您需要使用 runat=server 设置表单标记:

<form runat="server">
    <asp:Panel ID="Panel1" runat="server" Visible="False" Height="302px">
        

    </asp:Panel>
</form>

推荐阅读