2013-10-03 16 views
6

Ho già aggiunto <globalization culture="de-DE" uiCulture="de-DE" /> al mio Web.config. Ho aggiunto @Thread.CurrentThread.CurrentCulture al mio testview e mostra de-DE. Quindi, tutto sembra a posto.Come posso modificare la lingua di convalida sul sito Web Windows Azure (asp.net mvc4)?

Ma il messaggio di convalida è ancora in inglese, ad es.

Il campo di immissione è obbligatorio.

Qual è il mio errore?

+0

Hai capito? – bob

+1

No. Attualmente utilizzo attributi personalizzati. – Harry

risposta

0

Ho lo stesso problema.

Suppongo che "Microsoft .NET Framework 4.5 Language Pack" non sia installato su "Siti Web" di Azure. Sembra che l'utilizzo di un "progetto cloud di Azure" sia un'opzione, in quanto è possibile configurare IIS direttamente.

Un'altra soluzione è quella di aspettare per Microsoft per includere il supporto Language Pack in Azure ...

Personnaly, ho deciso di ignorare gli attributi principali. La maggior parte dei trickiest sono [Required] e [Regex]. Vedi sotto (Loc è la mia funzione di localizzazione come io sto usando 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); 
     } 
    } 

} 

per le espressioni regolari:

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

E

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 }; 
     } 
    } 
} 

E in Global.asax

DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(RegularExpressionLoc), typeof(RegularExpressionValidator)); 
Problemi correlati