カレンダーエクステンダーを備えたテキストボックスがあります。
フォーマットは次のようになります。
<add key="DateFormat" value="dd/MM/yyyy"/>
私のaspxマークアップには次のものがあります
<asp:TextBox ID="txt" runat="server"
meta:resourcekey="txt" MaxLength="150" HtmlEncode="False"></asp:TextBox>
<ajaxToolkit:CalendarExtender runat="server"
TargetControlID="txt"
PopupButtonID="Image1" Format="<%$Appsettings:DateFormat%>" />
次のようなプロパティで使用しようとすると:
datett= DateTime.Parse(txt.Text),
FormatExceptionと書いてあります。
私はデバッグし、Convert.ToDatetime も試しましたが、同じ例外が発生しました。
私がテストしているテキストは2015年5月30日です
私のweb.configの私のフォーマットによれば、これはうまくいくはずです。
update1 次のコードを使用して、ユーザーの選択に基づいてページの言語とカルチャを変更します。おそらくこれが失敗の理由です。
多くの回答が見られます。2 番目の質問は、現在の文化を取得する方法です。
/// <summary>
/// Handles the AcquireRequestState event of the Application control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
protected void Application_AcquireRequestState(object sender, EventArgs e)
{
//Create culture info object
/*var ci = new CultureInfo(Session["Language"].ToString());
System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(ci.Name);*/
System.Web.UI.Page p = (System.Web.HttpContext.Current.Handler as System.Web.UI.Page);
if (p != null)
{
p.UICulture = p.Culture = new CultureInfo((string)Session["Language"]).Name;
}
}