Ich habe ein benutzerdefiniertes Objekt namens S2kBool, das in und von einem regulären Boolean-Objekt konvertiert werden kann. Im Grunde erlaubt es meiner Anwendung, boolesche Werte in meiner alten Datenbank so zu behandeln, wie sie C# -Booleans behandelt. Wenn ich versuche, ein Kontrollkästchen zu verwenden, um den Wert einer S2kBool-Eigenschaft festzulegen, schlägt das Problem fehl.UpdateModel wird einen booleschen Wert nicht korrekt konvertieren
-Code funktioniert wie folgt:
public class MyClass {
public S2kBool MyProperty { get; set; }
}
MyClassInstance.MyProperty = true;
Aber es ist fast wie Update einen tatsächlichen Bool Typen erwartet, eher als ein Objekt, das zu einem bool umgewandelt werden kann. Ich kann es jedoch nicht wirklich sagen, da die ausgelöste Ausnahme so vage ist:
Das Modell wurde nicht erfolgreich aktualisiert.
Wie kann ich das umgehen? Benötige ich einen benutzerdefinierten ModelBinder?
Danke!
Angenommen, Sie möchten niemals eine Eigenschaft des Typs S2kBool mit einem anderen Modellbinder binden, würde ich den benutzerdefinierten Binder der Auflistung im Anwendungsstartereignis global.asax für diesen Typ hinzufügen, anstatt die Bindungsattribute in der Aktion zu verwenden selbst. –
Wird das benutzerdefinierte Modellbinder in global.asax hinzugefügt, wird es automatisch auf alle S2kBool-Eigenschaften angewendet? In dem Code, den ich oben angegeben habe, würde mein Modellbinder dann auf MyClass.MyProperty angewendet oder funktioniert es nur bei Methodenargumenten, wenn ich versuchte, Daten an MyClass zu binden? –