2014-02-12 21 views
0

它不承認我的lstSectionNumber。希望我能清楚地說明一切,我剛剛開始學習C#,希望能得到任何幫助。先謝謝你。類不(由於其保護級別Tickets.TicketForm.lastSectionNumber是無法訪問)返回一個對象

public class TicketOrder 
{ 
    private static int premiumTicket = 40; 
    private static int basicTicket = 20; 
    private static int serviceCharge = 2; 
    private TicketForm form = new TicketForm(); 

    public double CalcTicketCost(int section, double quantity) 
    { 
     double amount = 0; 
     if (int.Parse(form.lstSectionNumber.SelectedItem.Value) <= 150) 
     { 
      amount = (quantity*premiumTicket) + (quantity*serviceCharge); 
      return amount; 
     } 
     else 
     { 
      amount = (quantity*basicTicket) + (quantity*serviceCharge); 
     } 
     return amount; 
    } 
} 

代碼隱藏:

public partial class TicketForm : System.Web.UI.Page 
{ 
    int myInt; 

    public const double premiumTicket = 40; 
    public const double basicTicket = 20; 
    public const double serviceCharge = 2; 
    TicketUser user = new TicketUser(); 
    TicketOrder order = new TicketOrder(); 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     // This disables the unobtrusive validation in order to see the result 

     this.UnobtrusiveValidationMode = System.Web.UI.UnobtrusiveValidationMode.None; 

      // This will keep my five numbers in my list box without adding more with a refresh of a page 
      if (!IsPostBack) 
      { 

       Random RandomSection = new Random(); 
       for (int i = 0; i < 5; i++) 
       { 
        // Created a list box with five random numbers from 1 to 300 
        myInt = RandomSection.Next(1, 300); 
        lstSectionNumber.Items.Add(myInt.ToString()); 

       } 
      } 

    } 

    protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     // I also added TextMode="Number"to my <asp:TextBox ID="txtNumberOfTickets" 
     // runat="server" Height="18px" Width="134px"></asp:TextBox> code in order 
     // to get rid of an error incase I left my txtNumberOfTicket empty 
     int section = Convert.ToInt32(lstSectionNumber.SelectedValue); 

    double ticketQuantity = Convert.ToInt32(txtNumberOfTickets.Text); 


    //This label displays users first and last names, number of tickers, seat section number and ticket price 
    lblPrice.Text = txtFirstName.Text + " " + 
        txtLastName.Text + ", " + 
        txtNumberOfTickets.Text + " " + 
        "Tickets in Section:" + " " + 
        lstSectionNumber.SelectedValue + "," + 
        " Total Cost is: " + 
        order.CalcTicketCost(section, ticketQuantity).ToString("C"); 
    } 

    protected void btnCreateAccount_Click(object sender, EventArgs e) 
    { 
     user.firstName = txtFirstName.Text; 
     user.lastName = txtLastName.Text; 
     user.username = txtUserName.Text; 
     lblCreateAccount.Text = user.CreateAccount(); 
    } 
} 
+0

看起來你需要構造一個實現。 –

+0

您的構造函數缺少大括號。請正確格式化您的代碼,這將爲您節省頭痛。那些**是什麼?你想讓它變得更大膽嗎?這不會在代碼 – lahsrah

+0

內工作謝謝,並對不起。我確實添加了括號,到目前爲止相同的錯誤。是的,我確實試圖讓它大膽,我不知道這一點,將刪除它們。再次感謝您 – user3236592

回答

0

嗯,我想通了。

if (section <= 150) 
    { amount = (quantity * premiumTicket) + (quantity * serviceCharge); 
    return amount; 
1

,只需提供您的構造空體

變化

public TicketOrder() 

public TicketOrder() { } 

爲了解決您的其他問題,您正在嘗試創建一個新頁面,但asp.NET已經爲此頁面加載創建了一個頁面,併爲您填充了值。您應該將當前頁面對象傳遞給您的TicketOrder構造函數,然後保存。

像這樣:

public TicketOrder(TicketForm form) 
{ 
    this.form = form; 
} 
在TicketOrder

和變化

private TicketForm form = new TicketForm(); 

private TicketForm form; 

和變化TicketForm

TicketOrder order = new TicketOrder(); 

TicketOrder order; 
public TicketForm() 
{ 
    this.order = new TicketOrder(this); 
} 
+0

謝謝,我其實已經嘗試過了(我剛剛編輯了我的代碼),但仍然是完全相同的錯誤 – user3236592

+0

請刪除您的構造函數中的****,這在c#中不起作用。 – ohmusama

+0

對不起,我試圖使它粗體,但我想它不工作的代碼。謝謝 – user3236592

相關問題