我有一个奇怪的错误。我有一个页面,它根据存储在会话中的国家值加载值。它适用于所有其他国家/地区。它只针对特定的国家/地区返回此错误。
protected void populateDDMonth()
{
int numberOfMonths;
string monthName;
string completeCalendarFile = Path.Combine(Request.PhysicalApplicationPath + "admin\\text-files\\", calendarFile);
TextReader tr = new StreamReader(completeCalendarFile);
date_classa = tr.ReadLine(); //Get classa end date string
date_classb = tr.ReadLine(); //Get classb end date string
DateTime dateConvert_classa = DateTime.Parse(date_classa);
DateTime dateConvert_classb = DateTime.Parse(date_classb);
tr.Close();
DataTable MonthTable = new DataTable();
MonthTable.Columns.Add("Month", typeof(string));
MonthTable.Columns.Add("Date", typeof(string));
DateTime endMonth = DateTime.Today;
DDMonth.Items.Clear(); //Clear dropdown in order to re-populate
string classValue = DDClassType.SelectedValue.ToString();
if (classValue == "10" || classValue == "12" || classValue == "15")
{
endMonth = dateConvert_classa;
}
else if (classValue == "9" || classValue == "13" || classValue == "16")
{
endMonth = dateConvert_classb;
}
if (endMonth.Year > DateTime.Today.Year)
{
numberOfMonths = (endMonth.Month + 12) - DateTime.Today.Month;
}
else
{
numberOfMonths = endMonth.Month - DateTime.Today.Month;
}
for (int i = 0; i < numberOfMonths + 1; i++)
{
monthName = DateTime.Now.AddMonths(i).ToString("MMM"); //Display month as 3 letter string
DataRow MonthRow = MonthTable.NewRow();
MonthRow[0] = monthName.ToString() + " " + DateTime.Now.AddMonths(i).Year.ToString();
MonthRow[1] = DateTime.Now.AddMonths(i).ToString();
DDMonth.Items.Add(new ListItem(monthName.ToString() + " " + DateTime.Now.AddMonths(i).Year.ToString(),
DateTime.Now.AddMonths(i).ToString()));
}
if (Session["selectedMonth"] != null)
{
DDMonth.SelectedValue = Session["selectedMonth"].ToString();
}
if (!Page.IsPostBack)
{
DateTime startingDate = DateTime.Parse(DDMonth.SelectedValue.ToString());
LbCalendarCurrentMonth.Text = startingDate.ToString("MMMM");
}
}发布于 2011-02-07 23:07:13
这是国际文化中int类型转换和转换的常见问题:
http://support.microsoft.com/kb/942460
发布于 2011-02-08 12:44:34
在DDMonth下拉列表中选择的任何值(如果有)都不是有效日期。
因此,下面的代码应该可以正常工作,没有错误:
DateTime startingDate;
if (DateTime.TryParse(DDMonth.SelectedValue.ToString(), out startingDate)
{
LbCalendarCurrentMonth.Text = startingDate.ToString("MMMM");
}https://stackoverflow.com/questions/4922742
复制相似问题