2010-08-15 1 views
5

Ich probiere einige Globalisierung in einer asp.net mvc2-Anwendung aus, aber kann es nicht vollständig funktionieren. Ich benutze die Bibliothek http://github.com/nje/jquery-glob als ein Werkzeug, um Währung und Daten usw. nach Benutzerwünschen anzuzeigen. Aber etwas stört mich ein wenig. IU kann die Client/Server-Validierung nicht dazu bringen, die Globalisierung mit jQuery zu akzeptieren. Egal, was ich versuche, wenn ich 40,00 poste, funktioniert alles ok, aber wenn ich 40,00 poste, wird es als 0 akzeptiert (kein gültiger .NET invarianter Dezimalwert). Ich habe versucht, @haacked ‚s guideWie kann ich die Globalisierung mit MVC2 und jquery arbeiten lassen?

Diese in global.asax für serverseitige Handhabung ist zu beachten:

private void SetCulture(string currencySymbol) 
{ 
    AjaxHelper.GlobalizationScriptPath = 
     http://ajax.microsoft.com/ajax/4.0/1/globalization/"; 

    var culturePref = "sv-SE"; 
    var request = HttpContext.Current.Request; 

    if (request.UserLanguages == null) 
     return; 

    var lang = request.UserLanguages[0]; 
    if (lang != null) { 
     try { 
      Thread.CurrentThread.CurrentCulture = 
       CultureInfo.CreateSpecificCulture(lang); 
     } 
     catch { 
      Thread.CurrentThread.CurrentCulture = 
       new CultureInfo(culturePref); 
     } 
    } 

    Thread.CurrentThread.CurrentUICulture = 
     Thread.CurrentThread.CurrentCulture; 
} 

Dann auf der Client-Seite habe ich die folgenden Skripte enthalten sind:

<script src="/Scripts/jquery-1.4.2.js" type="text/javascript"></script> 
<script src="/Scripts/jquery.glob.js" type="text/javascript"></script> 
<script src="/Scripts/globinfo/jquery.glob.sv-SE.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $.culture = jQuery.cultures['sv-SE']; 
     $.preferCulture('sv-SE'); 
    }); 
</script> 
<script src="/Scripts/jquery.validate.js" type="text/javascript"></script> 
<script src="/Scripts/jquery.validate.pack.js" type="text/javascript"></script> 
<script src="/Scripts/MicrosoftMvcJQueryValidation.js" type="text/javascript"></script> 
<script src="/Scripts/jquery.metadata.js" type="text/javascript"></script> 

So so gut, aber es macht nicht viel. Versteht mich nicht falsch, ich kann immer noch damit davonkommen, es auf dem Client zu benutzen, aber auf der Server-Seite passiert wirklich nichts. Die folgende jQuery ändert das Format entsprechend, aber wenn ich 40,00 zurückbuche, wird es 0,00.

function globalizePage(culture) { 
    // Set culture from select list 
    $.preferCulture(culture); 

    $("input[id$='Date']").val(function() { 
     var dateString = $(this).val(); 
     var date = Date.parse(dateString); 
     var dt = $.format(date, 'd', culture.name); 
     return dt; 
    }); 

    $("input[id$='Price']").val(function() { 
     var price = $.parseInt($(this).val()); 
     var retVal = $.format(price, 'c', culture.name); 
     return retVal; 
    }); 
} 

Was muss ich tun, damit der obige Code funktioniert?

Antwort

3

Problem gelöst, Speck gerettet oder Hühnchen gebraten. Der Grund dafür ist, dass jquery.validate und jquery.glob eine Funktion namens "format" verwenden, wenn validate nach glob hinzugefügt wird, dann wird die validate.format-Funktion aufgerufen, die die Globalisierung unterbricht. Auf der anderen Seite validieren Sie die Funktion. Ich kenne Javascript oder Jquery nicht gut genug, um Ihnen irgendwelche Workarounds zu sagen. Ich werde nur die Validierung des Formulars manuell codieren und über die MicrosoftMVCjQueryValidation vergessen, da dies das validate-Plugin nicht gerecht macht.

<script src="https://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js" type="text/javascript"></script> 
<script src="https://ajax.microsoft.com/ajax/jQuery.Validate/1.7/jQuery.Validate.min.js" type="text/javascript"></script> 
<script src="/Scripts/jquery.glob.js" type="text/javascript"></script> 
<script src="/Scripts/globinfo/jquery.glob.sv-SE.js" type="text/javascript"></script> 
<script src="/Scripts/jquery.forms.js" type="text/javascript"></script> 
Verwandte Themen