2013-10-03 4 views
6

Ich habe bereits <globalization culture="de-DE" uiCulture="de-DE" /> zu meiner Web.config hinzugefügt. Ich habe @Thread.CurrentThread.CurrentCulture zu meinem Testview hinzugefügt und es zeigt de-DE. Also, alles scheint in Ordnung zu sein.Wie kann ich die Validierungssprache auf der Windows Azure-Website (asp.net mvc4) ändern?

Die Validierungsnachricht ist jedoch immer noch auf Englisch, z.

Das Eingabefeld ist erforderlich.

Was ist mein Fehler?

+0

Haben Sie es herausgefunden? – bob

+1

Nein. Zur Zeit verwende ich benutzerdefinierte Attribute. – Harry

Antwort

0

Ich habe das gleiche Problem.

Ich nehme an, dass "Microsoft .NET Framework 4.5 Language Pack" nicht auf Azure "Websites" installiert ist. Es scheint, dass die Verwendung eines "Azure-Cloud-Projekts" eine Option ist, da Sie IIS dann direkt konfigurieren können.

Eine andere Lösung ist für Microsoft warten Language Pack Unterstützung in Azure schließen ...

personnaly, ich habe beschlossen, die wichtigsten Attribute außer Kraft zu setzen. Die meisten Trickiests sind [Required] und [Regex]. Siehe unten (Loc ist meine eigene Lokalisierungsfunktion, wie ich bin mit gettext)

using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 
using System.Globalization; 
using System.Web.Mvc; 

namespace Ic.DataAnnotations 
{ 
    public class RequiredLoc : RequiredAttribute, IClientValidatable 
    { 

     public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, 
      ControllerContext context) 
     { 
      yield return new ModelClientValidationRule 
      { 
       ErrorMessage = FormatErrorMessage(metadata.DisplayName), 
       ValidationType = "required" 
      }; 
     } 

     public override string FormatErrorMessage(string message) 
     { 
      base.FormatErrorMessage(message); 
      return Localizer.Loc("Le champs '%1' est requis.", message); 
     } 
    } 

} 

Für reguläre Ausdrücke:

using System.ComponentModel.DataAnnotations; 
using System.Globalization; 

namespace Ic.DataAnnotations 
{ 
    public class RegularExpressionLoc : RegularExpressionAttribute 
    { 
     private readonly string _errorMessage; 

     public RegularExpressionLoc(string errorMessage, string pattern) 
      : base(pattern) 
     { 
      _errorMessage = errorMessage; 
     } 

     public override string FormatErrorMessage(string input) 
     { 
      return Localizer.Loc(_errorMessage); 
     } 
    } 
} 

Und

using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 
using System.Web.Mvc; 

namespace Ic.DataAnnotations 
{ 
    public class RegularExpressionValidator : DataAnnotationsModelValidator<RegularExpressionAttribute> 
    { 
     private readonly string _message; 
     private readonly string _pattern; 

     public RegularExpressionValidator(ModelMetadata metadata, ControllerContext context, RegularExpressionAttribute attribute) 
      : base(metadata, context, attribute) 
     { 
      _pattern = attribute.Pattern; 
      _message = attribute.FormatErrorMessage(""); 
     } 

     public override IEnumerable<ModelClientValidationRule> GetClientValidationRules() 
     { 
      var rule = new ModelClientValidationRule 
      { 
       ErrorMessage = _message, 
       ValidationType = "regex" 
      }; 

      rule.ValidationParameters.Add("pattern", _pattern); 

      return new[] { rule }; 
     } 
    } 
} 

Und in Global.asax

DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(RegularExpressionLoc), typeof(RegularExpressionValidator)); 
Verwandte Themen