0

アプリケーションを Windows フォームから ASP.net に移植する必要があります

別のフォームを使用して販売のデータをフォームに追加しようとするまで、すべて正常に機能します。Windows フォームでは問題なく動作しますが、ASP で試してみると、「Null Reference Exception was unhandeled by user code というメッセージが表示されます。

これは、メイン フォームから [新しい販売を追加] にアクセスしようとするとポップアップします。

私の「Add Sale Form」のコードは次のとおりです。

public partial class AddSaleForm : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    public Sale GetData()
    {

        return new Sale(IdTextbox.Text, DateTextbox.Text, LocationTextBox.Text, Convert.ToDouble(PitchCostTextbox.Text), Convert.ToInt32(NumPitchesTextbox.Text), CharityCheckbox.Checked, CharityNameTextbox.Text, CateringCheckBox.Checked);
    }

何がうまくいかず、どこで修正できますか?

コンストラクタは次のとおりです。

    namespace AntiqueSale
{
    [Serializable]
    public class Sale : IComparable<Sale>
    {
        private String saleId;

        public String SaleId
        {
          get { return saleId; }
          set { saleId = value; }
        }

        private String saleDate;
        private String location;
        private double pitchCost;
        private int numPitches;
        private bool charity;

        public bool Charity
        {
            get { return charity; }
            set { charity = value; }
        }

        private String charityName;
        private bool catering;

        public Sale(String saleId,
                        String saleDate,
                        String location,
                        double pitchCost,
                        int numPitches,
                        bool charity,
                        String charityName,
                        bool catering)
        {
            this.saleId = saleId;
            this.saleDate = saleDate;
            this.location = location;
            this.pitchCost = pitchCost;
            this.numPitches = numPitches;
            this.charity = charity;
            this.charityName = charityName;
            this.catering = catering;
        }

        public override string ToString()
        {
            String str;

            String charityString;
            String cateringString;
            String charityNameString;

            if (charity)
            {
                charityString = "Yes";
                charityNameString = charityName;
            }
            else
            {
                charityString = "No";
                charityNameString = "N/A";
            }

            if (catering)
            {
                cateringString = "Yes";
            }
            else
            {
                cateringString = "No";
            }

            str = String.Format("{0}: {1}: {2}: {3}: {4}: {5}: {6}: {7}",
                                    saleId,
                                    saleDate,
                                    location,
                                    pitchCost,
                                    numPitches,
                                    charityString,
                                    charityNameString,
                                    cateringString);
            return str;
        }

        public int CompareTo(Sale sale)
        {
            return this.SaleId.CompareTo(sale.SaleId);
        }
    }

コンストラクターは私が設計したものではありません。これは、私が受け取った最初のコードであり、asp に変更する必要がありました。

4

1 に答える 1

1

問題は、次の 2 行のコードのいずれかです。

  1. 代わりに次のようにしてPitchCostTextbox.Text、行の が null または空でないことを確認します。Convert.ToDouble(PitchCostTextbox.Text)

    double PitchCost = 0.0;
    if(!String.IsNullOrEmpty(PitchCostTextbox.Text))
    {
        PitchCost = Convert.ToDouble(PitchCostTextbox.Text);
    }
    
  2. NumPitchesTextbox.Text行の が null または空でない ことを確認しますConvert.ToInt32(NumPitchesTextbox.Text)

    int NumPitches = 0;
    if(!String.IsNullOrEmpty(NumPitchesTextbox.Text))
    {
        NumPitches = Convert.ToInt32(NumPitchesTextbox.Text);
    }
    
于 2013-08-13T19:42:44.290 に答える