Ich möchte eine Website in verschiedenen Sprachen erstellen. Ich lese schon, dass ich eine ActionFilter schaffen könnte, aber ich habe ein litte Problem:
Ich hatte einen benutzerdefinierten Modelbinder zu schaffen, um mit Englisch und Deutsch Zahlenformate (123,456,789.1
vs. 123.456.789,1
)Ändern Sie die Kultur, bevor ModelBinder verwendet wird
public class DecimalModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
string key = bindingContext.ModelName;
var v = ((string[])bindingContext.ValueProvider.GetValue(key).RawValue)[0];
float outPut;
if (float.TryParse(v, NumberStyles.Number, System.Globalization.CultureInfo.CurrentCulture, out outPut))
return outPut;
return base.BindModel(controllerContext, bindingContext);
}
}
Diese zu arbeiten ModelBinder verwendet die aktuelle Kultur, um zu entscheiden, welches Format verwendet wird. Unglücklicherweise wird der ModelBinder verwendet, bevor der ActionFilter die Kultur ändern kann. Wie kann ich die Kultur ändern vor der ModelBinder wird aktiv?
setzen! Aber ich habe eine Frage: Weißt du, warum der Code 5 Mal pro Anfrage ausgeführt wird? – Christopher
Ich bekomme dieses Verhalten nicht. Können Sie eine Watch hinzufügen ((System.Web.HttpApplication) (Absender). Request.RawUrl und sehen, ob die Anfragen die gleichen sind? – barry
@Christopher Der Code wird einmal pro Anfrage ausgeführt (daher der Name BeginRequest), also gibt es vielleicht eine Anfrage für die Seite und 4 weitere für Stylesheets, Bilder oder JavaScript-Dateien. Überprüfen Sie die Request.Url, die etwas Licht geben kann. –