我目前有一个需要支持多种文化的应用程序。一个日期字符串被传入并被解析为一个DateTime对象。为了允许多种文化,我首先设置线程的文化和UICulture。
这是我的代码示例:
首先,我为此线程设置了区域性。这是通过URL(例如en-us,en-ca,fr-ca)传递的:
CultureInfo ci = new CultureInfo(culture, false);
Thread.CurrentThread.CurrentUICulture = ci;
Thread.CurrentThread.CurrentCulture = ci;
Run Code Online (Sandbox Code Playgroud)
然后,我将一个也传入URL的日期字符串转换为DateTime。根据文化的不同,日期将以mm / dd / yyyy或dd / mm / yyyy传递。
我用以下代码解析日期字符串:
DateTime DateTimeObject;
bool validDate = DateTime.TryParse(DateStringFromURL, Thread.CurrentThread.CurrentCulture, DateTimeStyles.None, out DateTimeObject);
Run Code Online (Sandbox Code Playgroud)
TryParse适用于大多数区域性,并提供了有效的datetime对象。但是,en-ca和fr-ca会出现问题。如果传入了错误的格式,则日期字符串将无法正确解析。
下面显示了每种文化.NET似乎期望的格式:
dd/MM/yyyy MM/dd/yyyy
EN-CA Valid Invalid
FR-CA Invalid Valid
Run Code Online (Sandbox Code Playgroud)
编辑:更确切地说,这里是导致我出现问题的示例:
对于EN-CA:
DateTime.Parse("26/08/2014") //VALID
DateTime.Parse("08/26/2014") //EXCEPTION THROWN
Run Code Online (Sandbox Code Playgroud)
对于FR-CA:
DateTime.Parse("26/08/2014") //EXCEPTION THROWN
DateTime.Parse("08/26/2014") //VALID
Run Code Online (Sandbox Code Playgroud)
这与其他系统如何处理这种文化的日期格式相反。
为什么格式看似倒退?这是.NET 4.5的错误吗?
任何和所有帮助将不胜感激,谢谢。
注意:.NET版本4.5
我试图找到一种方法来循环EF对象的属性并更新这些属性的值.更具体地说,我有50个字段,最多由50个下拉列表填充.所有50个可能需要或可能不需要填充.
为了解决这个问题,我有一个转发器,最多可以创建50个DDL.用户将为每个值选择值,然后按更新按钮.我正在遍历转发器中的项目,并可以计算我在转发器中的迭代次数.我还想使用此计数来了解我需要更新的字段.例如,DDL1 = FIELD1,DDL2 = FIELD2,....).
这是我想要做的一个例子:
using (Data.Entities dataContext = new Data.Entities)
{
var efObject = dataContext.EFData.Where(c => c.ID = [SOMEID]).First();
int posCount = 0;
foreach (RepeaterItem rep1 in repeaterControl.Items)
{
DropDownList ddlControl= (DropDownList)rep1.FindControl("ddlControl");
//Here is where I need to update a field
//Something like: efObject.Field# = ddlControl.SelectedValue;
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法动态创建我需要更新的属性名称?
我可以通过索引访问一些属性集合吗?
这甚至与我应该如何处理这个问题的距离很近?
任何和所有的帮助将不胜感激.谢谢.
我希望安装最新版本的Azure SDK 2.3版.这可以与Azure SDK 2.0并行运行吗?