1

私は他の誰かのコードを理解しようとしている新しいプログラマーです。このプログラムの目的は、ブックマークを使用してMySQLデータをWordファイルテンプレートに入れることです。ARとICNは2種類のレポートであるため、それぞれに独自のテンプレートがあります。コードには元々ARのみが含まれていましたが、ICNを追加しました。コンソールアプリケーションは正常に動作します。Webページに問題があります。if (int.TryParse(ticketId, out currentTicket))私のコードの中にFALSEdefault.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

TryParse が FALSE を返し、デフォルト ページにリダイレクトされるため、TicketID の値を整数にすることはできません。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 に答える