Ich benutze das ModelStateDictionary in asp.net mvc derzeit, um Validierungsfehler zu halten und dann an den Benutzer zurück zu übergeben. In der Lage zu überprüfen, ob das gesamte Modell mit ModelState.IsValid gültig ist, ist besonders. Eine aktuelle Anwendung, an der ich gerade arbeite, muss jedoch Warnungen melden können. Diese sind nicht so kritisch, so dass der Formularinhalt immer noch gespeichert werden kann, aber sie sollten dem Benutzer angezeigt werden, damit die Aktion optional ausgeführt werden kann.Modellwarnungen in ASP.NET MVC
Ich habe durch den Rahmen gesucht, um zu sehen, ob es irgendeinen offensichtlichen Platz gibt, um es zu erweitern, um mir zu erlauben, dies zu tun. Ich denke, dass ein anderes Wörterbuch mit Warnungen in und einer Unterklasse des Modellfehlers Modellwarnung genannt wird. Ich bin mir nicht sicher, wie ich das Framework erhalten würde, um meine neuen Container-Klassen in der Ansicht usw. zu verwenden, aber ich möchte immer noch alle vorhandenen Fehler-Sachen funktionieren.
Wenn jemand etwas Ähnliches versucht hat oder irgendwelche Gedanken hat, würde ich ihre Eingabe schätzen.
Update:
Ich habe so weit gekommen, wie der Viewdatadictionary erstreckt einige Warnungen
public class AetherViewDataDictionary : ViewDataDictionary
{
public AetherViewDataDictionary()
{
ModelStateWarning = new ModelStateDictionary();
}
public AetherViewDataDictionary(object model) : base(model)
{
ModelStateWarning = new ModelStateDictionary();
}
public AetherViewDataDictionary(ViewDataDictionary viewDataDictionary) : base(viewDataDictionary)
{
ModelStateWarning = new ModelStateDictionary();
}
public ModelStateDictionary ModelStateWarning { get; private set; }
}
Das Problem hinzufügen, die ich jetzt habe, ist, dass, wenn ich zu meiner Ansicht Code zu erhalten, diese nur für debug Ich verliere die Tatsache, dass es mein neuer Typ ist, also wenn ich versuche, es zurück zu werfen und Zugang zu meinem neuen Wörterbuch zu bekommen, habe ich keine Freude.
Es setzt es hier richtig, aber wenn ich den Typ überprüfe, ist es weg.
Bearbeiten: Dies erwies sich als eine dumme Art und Weise, Dinge zu tun, siehe Antwort unten.
Was ist AttemptedValue? –
Auch "if (aState == null) gibt true zurück;" Zeile ist falsch. Wir sollten True zurückgeben, wenn und nur wenn die zugehörige Kollektion mindestens einen Artikel enthält. Also sollten Sie diese Zeile entfernen und die nächste Zeile in "return (aState! = Null && aState.Warnings.Count> 0);" –