1

我是一名新程序员,试图理解别人的代码。该程序的目的是使用书签将 MySQL 数据放入 word 文件模板中。AR 和 ICN 是两种类型的报告,因此它们都有自己的模板。代码最初只包含 AR,我现在添加了 ICN。控制台应用程序运行良好,网页出现问题。我不明白为什么if (int.TryParse(ticketId, out currentTicket))我的代码中FALSE会生成 default.aspx 。

试图在浏览器中查看此代码

using System;
using System.Web;
using TicketExtractionLibrary;

namespace TicketExtractionWeb
{
    public partial class GetAR : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string ticketId = Request.QueryString["TicketId"];
            int currentTicket;

            string applicationPath = Request.PhysicalApplicationPath;
            ARExtractionController ARController = new ARExtractionController();

            string arTemplateLocation = HttpContext.Current.Server.MapPath("~/AR.dot");
            string mappingLocation = HttpContext.Current.Server.MapPath("~/ARmapping.xml");

            if (int.TryParse(ticketId, out currentTicket))
            {
                ARController.Extract(currentTicket, applicationPath + "LastTickets", arTemplateLocation, mappingLocation);

                Response.Clear();
                Response.Buffer = true;
                Response.ContentType = "application/msword";
                Response.AddHeader("content-transfer-encoding", "binary");
                Response.AddHeader("content-disposition", "attachment;filename=AR" + ticketId + ".docx");

                Response.ContentEncoding = System.Text.Encoding.GetEncoding(1251);

                string path = Server.MapPath(@"\LastTickets\AR" + ticketId + ".docx");
                System.IO.FileInfo file = new System.IO.FileInfo(path);

                Response.WriteFile(path);

                Response.End();
            }
            else
            {
                Response.Redirect("Default.aspx");
            }
        }
    }
}

解决方案资源管理器

4

3 回答 3

4

这就是说,如果通过查询字符串传递的 TicketID 不是整数,则没有要生成的报告或 Word 文档,因此将用户重定向到 default.aspx 页面。

于 2012-09-27T17:36:14.320 回答
0

TicketID 的值不能是整数,因为 TryParse 返回 FALSE 并且您将被重定向到默认页面。确保 TicketID 值为整数。

于 2012-09-27T17:38:39.140 回答
0

正如@MarkSherretta 所说,TryParse 失败,它向“if”语句发送“false”,导致控制权传递给调用 Default.aspx 的“else”,如您的代码所示。

请参阅 TryParse 上的 MSDN:

http://msdn.microsoft.com/en-us/library/f02979c7.aspx

于 2012-09-27T17:41:29.110 回答