2017-10-01 3 views
0
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace XEx08Reservation 
{ 
    public partial class Request : System.Web.UI.Page 
    { 
     private string currentDate = DateTime.Today.ToShortDateString(); 
     private string currentYear = DateTime.Today.Year.ToString(); 


     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       // set copyright year no matter what 
       lblYear.Text = currentYear; 

       // display saved reservation data if there is any 
       if (Session["Reservation"] != null) 
       { 
        DisplayReservation(); 
       } 
       else { 
        // otherwise, set default values 
        txtArrivalDate.Text = currentDate; 
        rdoKing.Checked = true; 
       } 
      } 
     } 

     private void DisplayReservation() 
     { 
      Reservation reservation = (Reservation)Session["Reservation"]; 

      txtArrivalDate.Text = reservation.ArrivalDate.ToShortDateString(); 
      txtDepartureDate.Text = reservation.DepartureDate.ToShortDateString(); 
      ddlNoOfPeople.SelectedValue = reservation.NoOfPeople.ToString(); 

      if (reservation.BedType == "King") 
       rdoKing.Checked = true; 
      else if (reservation.BedType == "Two Queens") 
       rdoDouble.Checked = true; 
      else 
       rdoSingle.Checked = true; 

      txtSpecialRequests.Text = reservation.SpecialRequests; 
      txtFirstName.Text = reservation.FirstName; 
      txtLastName.Text = reservation.LastName; 
      txtEmail.Text = reservation.Email; 
      txtPhone.Text = reservation.Phone; 
      ddlPreferredMethod.SelectedValue = reservation.PreferredMethod; 
     } 

     protected void btnClear_Click(object sender, EventArgs e) 
     { 
      txtArrivalDate.Text = currentDate; 
      txtDepartureDate.Text = ""; 
      ddlNoOfPeople.SelectedIndex = -1; 
      rdoKing.Checked = true; 
      rdoDouble.Checked = false; 
      rdoSingle.Checked = false; 
      txtSpecialRequests.Text = ""; 
      txtFirstName.Text = ""; 
      txtLastName.Text = ""; 
      txtEmail.Text = ""; 
      txtPhone.Text = ""; 
      ddlPreferredMethod.SelectedIndex = 0; 
      lblMessage.Text = ""; 
     } 

     protected void btnSubmit_Click(object sender, EventArgs e) 

     { 
      Reservation reservation = new Reservation(); 
      reservation.ArrivalDate = Convert.ToDateTime(txtArrivalDate.Text); 
      reservation.DepartureDate = Convert.ToDateTime(txtDepartureDate.Text); 
      TimeSpan tsDuration = reservation.DepartureDate - reservation.ArrivalDate; 
      reservation.NoOfDays = Convert.ToInt32(tsDuration); 
      tsDuration.Days.ToString(); 
      reservation.NoOfPeople = Convert.ToInt32(ddlNoOfPeople.SelectedValue); 
      reservation.PreferredMethod = Convert.ToString(ddlPreferredMethod.SelectedValue); 

      if (rdoKing.Checked) reservation.BedType = "King"; 
      else reservation.BedType = "Double Double"; 

      reservation.SpecialRequests = txtSpecialRequests.Text; 
      reservation.FirstName = txtFirstName.Text; 
      reservation.LastName = txtLastName.Text; 
      reservation.Email = txtEmail.Text; 
      reservation.Phone = txtPhone.Text; 

      Session["Reservation"] = reservation; 
      Response.Redirect("Confirm.aspx"); 

     } 
    } 
} 

Bonjour à tous,Comment puis-je calculer correctement l'étiquette NoOfDays qui s'affichera sur la page Confirmer aspx?

J'ai application web dans laquelle je suis un nouvel objet Initialisation de réservation et puis définir les propriétés en fonction des valeurs saisies par l'utilisateur sur le formulaire; cependant, j'ai du mal à calculer correctement le nombre total de jours entre le ArrivalDate et le DepartureDate qui sera éventuellement affiché dans une étiquette sur la page Confirm.aspx. Est-ce que quelqu'un peut m'aider?

+1

S'il vous plaît lire ce guide pour savoir comment pour créer un [exemple minimal, complet et vérifiable] (https://stackoverflow.com/help/mcve), puis modifiez la question comme décrit dans le guide. Cela peut prendre un certain temps pour lire le guide et apporter les modifications, mais cela vous aidera à obtenir de meilleures réponses et vous pourrez découvrir la réponse tout en révisant la question. A titre d'exemple d'une modification qui aiderait, si votre question concerne 'days (DepartureDate - ArrivalDate)', il est très peu probable que l'exemple minimal contienne 'King',' Two Queens' ou 'reservation.Phone'. –

Répondre

0

Utilisez Soustrayez pour trouver le diff et utilisez la propriété days pour obtenir le nombre exact de jours.

var ArrivalDate = DateTime.Parse("09 Aug 2008"); 
var DepartureDate = DateTime.Parse("03 Aug 2009"); 
var days = DepartureDate.Subtract(ArrivalDate).Days; 

J'ai regardé votre code. vous êtes en train de faire près de ce qui précède. S'il vous plaît laissez-moi savoir quel est le problème exact. Il semble que ce n'est pas seulement le calcul de la date. Plus comme conversion de datetime de chaîne. Si c'est ce que vous faites face, utilisez les ci-dessous suggesions

  1. Suivez la culture actuelle tout en obtenant des entrées utilisateur
  2. Utilisez la même culture pour convertir la date de la chaîne