2011-02-07 33 views
2

私は奇妙なエラーがあります。セッションに保存されている国の値に従って値をロードするページがあります。他のすべての国で正常に動作します。このエラーを返すのは特定の国のみです。入力文字列が正しい形式でないasp.net

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"); 

    } 
} 
+4

を私たちにいくつかのコードを表示し、 – anthares

+0

この質問は、ここですべてを投稿していないコード –

+0

ずに役に立たないですしてください。 「キャッチ」ブロックを検索してここに投稿すると、そのうちの1つが関連します。それをデバッグすることができれば、正確な場所を見つけてそのコードだけを投稿してください。 –

答えて

1

これは国際文化内のint型のキャストとの変換に共通の問題である:

http://support.microsoft.com/kb/942460

+0

これはjavascriptエラーとして表示されます。 – sam

+0

@sampath - なぜJavaScriptに質問を付けなかったのですか?あなたはそれをasp.netと名づけました。asp.netのトラブルシューティングとレスポンスを得るのは妥当と思われませんか? –

+0

@Joel私は、コードビハインドファイルからのエラーだと思うが、javascriptエラーとしてポップアップする。私はキャスティングのエラーをチェックしたが、すべてうまく見える。 – sam

0

ダウンDDMonthドロップ(もしあれば)選択されたどのような値が、有効な日付ではありません。

だから、次のコードはエラーなしで動作するはずです:

DateTime startingDate; 
if (DateTime.TryParse(DDMonth.SelectedValue.ToString(), out startingDate) 
{ 
    LbCalendarCurrentMonth.Text = startingDate.ToString("MMMM"); 
} 
関連する問題