2014-02-12 2 views
0

Он не распознает мой lstSectionNumber (Tickets.TicketForm.lastSectionNumber недоступен из-за его уровня защиты). Надеюсь, я все ясно объяснил, я только недавно начал изучать C#, любая помощь была бы оценена. Заранее спасибо.Класс не возвращает объект

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; 
    } 
} 

Code-за:

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

Смежные вопросы