JQuery'den AJAX çağrıları yapmak için 'WebMethod' özniteliğini kullanan bir ASP .NET Web Formları uygulamasına sahibim. Uygulamayı lokalize çalışıyorum uğraşıyorum bu yüzden son zamanlarda test amaçlı şuna benzer bir web yöntemini yarattı:Geçerli iş parçacığının CultureInfo, ASP .NET'te 'WebMethod' çağrısında bir DateTime parametresi ayrıştırılırken neden kullanılmıyor?
[WebMethod]
public static string HandleDate(DateTime dateValue)
{
return dateValue.ToString("f");
}
bu yöntemin noktası doğrulanmasıdır
ben düzgün web CultureInfo ayarlarsanız yöntem, sağlanan kültürü tarih formatlama kurallarını kullanarak doğru şekilde ayrıştırır. Maalesef bu kod asla ulaşılamıyor. Bunun yerine, bu WebMethods'ın çağrılmasına izin veren yardımcı sınıflar tarafından yükseltilmekte bir hata görüyorum.
Geçerli parçanın 'CurrentCulture' ve 'CurrentUICulture' özelliklerini 'BeginRequest' etkinliğinde 'pt-BR' (Brezilya Portekizcesi) olarak ayarlayan bir HttpModule'ım var.
İstemci tarafı, '18/10/2010 'olarak dateValue parametresini sağlayan bu' HandleDate 'web yöntemine jQuery AJAX çağrısı var. 'Pt-BR' kültüründe bu, 18 Ekim 2010'a kadar değerlendirilmelidir (gün/ay/yıl tarih formatı).
Bunu çalıştırdığımda, 'System.Web.Script.Serialization.ObjectConverter', '18/11/2010 'DateTime için geçerli bir değer olmadığını belirten bir hata olduğunu belirten bir hata alıyorum. Hataya dahil yığın izleme, bunun, dönüştürme sırasında uygulanması gereken kültürü temsil eden bir CultureInfo nesnesine ek olarak dönüştürülecek nesneyi kabul eden 'System.ComponentModel.DateTimeCoverter.ConvertFrom' yöntemi tarafından atıldığını gösterir.
Reflector'u ateşledim ve 'ObjectConverter' sorunun olduğunu düşündüğüm CultureInfo.InvariantCulture örneğini kullanarak 'DateTimeConverter' öğesini çağırıyor.
Bu mantığı InvariantCulture yerine geçerli iş parçacığına ekli CultureInfo kullanmak için nasıl zorlayabilirim?
Sanırım '18/10/2010'u bir DateTime'a dönüştürmeye çalışıyorum, böylece yönteme aktarılabilir ve kodunuzla ilgisi yoktur "dateValue.ToString (" f ")" – Greg
Yah Yöntemin içindeki kodlara asla ulaşılamaz. Bu kesinlikle tarihin ayrıştırılmasını yapıyor, ama nedenini bilmek istiyorum. Soruyu biraz açıklığa kavuşturacağım. –