1

Wir müssen ein Programm erstellen, das Runsheets und andere Formulardaten sammelt.Wie speichere ich ungültige Daten?

Alle Formulare müssen so gespeichert werden, wie sie eingegeben werden. Wenn sie nicht explizit verworfen werden, sind auch die Formularfelder ungültig.
Der Benutzer sollte immer in der Lage sein, "Für später zu speichern" oder einfach sein Fenster zu schließen, und Daten sollten gespeichert werden.

Das Problem ist, ich muss alle RunSheets indiziert und durchsuchbar, einschließlich der ungültigen.

Ich bin auf einige Optionen suchen:

  • Haben Sie eine Unterklasse des gleichen Typs, die die Validierung implementiert (wird das?)
  • die ungültigen Einträge als XML serialisiert und speichern Sie es woanders, bis es wird validiert und dauerhaft gespeichert.
  • Verwenden Sie keine Validierungsattribute, sondern nur benutzerdefinierte Validierung (dh IValidatableObject Schnittstelle), die Validierung umgehen wird, wenn eine andere Eigenschaft im Datensatz angibt, dass die Validierung übersprungen werden sollte, aber dann könnte ich mit einer Menge Daten in der Datenbank enden in der gleichen Tabelle, vielleicht ist das kein Problem, solange ich die Kontrolle habe. Ich denke wirklich über diese Option am meisten nach.

habe ich wirklich Zweifel:

  • Wenn ich Daten an anderer Stelle zu speichern, ist die Suche wird ein Alptraum
  • Wenn ich die Validierung in einem externen Laufzeitverfahren machen, ist die Verwendung der Validierung zu vermeiden Attribute, die Spalten in der Datenbank spiegeln nicht die Anforderungen an die tatsächlichen Eigenschaften (dh die erforderlichen Felder) wider.

Ich glaube, ich für diese Option gehen werde, weil zwei Tabellen suchen, die mich mehr stört, und auch, weil in der Tat die Spalten nicht so streng sein, aber ich kann so eingestellt noch ihre MaxLength und einige andere lebenswichtige Eigenschaften, die für die Datenbankstruktur wichtig sind, aber den Validierungsprozess nicht wirklich stören.
Wirklich ist es nicht, dass ich eine datetime als Zeichenkette speichern oder so niedrig gehen muss.

Ich wollte nur von Leuten hören, die in einer ähnlichen Situation konfrontiert und könnte einige glatte magische Methode haben ...

+0

Ich werde für die zweite Option gehen – Sherlock

+0

Aber es muss in den Suchergebnissen enthalten sein. Nervensäge. – Shimmy

+0

Können Sie eine "finalisieren" Bühne einrichten? Setzen Sie zum Beispiel ein boolesches "Final" und wenn es wahr ist, gehen Sie für die stringente Validierung? –

Antwort

1

Ich denke, ich werde nur für sehr ungestörte Validierung im Modell (d. H. MaxLength etc.) gehen), und eine Eigenschaft, die bestimmt, ob das Modell ohne Validierung gespeichert werden soll, und dann Implementierung IValidatableObject Ich werde alle erforderlichen Validierungsattribute als benutzerdefinierte benutzerdefinierte Validierung implementieren.

0

wie über sie alle als Cookie in Benutzer-Browser als eine Form von Zeichenfolgen speichern (Strings benötigen keine Validierung in clientSide, außer Sie binden es an). Und verwenden Sie nur Server-Validierungen für Ihre Datenbank-Commits.

Storing multiple values in cookies

wie gesagt Verwendung keine Client-Validierung in Ihrem Modell

:

prüfen hier, um weitere Informationen über Daten in Cookies zu speichern.

Verwenden Sie dazu ViewModels und speichern Sie ViewModel in Cookies. Dann auf Ihrem Controller nur validieren, wenn der Benutzer schließlich in die Datenbank speichern möchte.

+1

OP besagt, dass ungültige Daten immer noch indexierbar und durchsuchbar sein müssen. Daher müssen die Daten vermutlich weiterhin serverseitig gespeichert werden. –

+1

Sie können Daten ohne Validierung als String in Ihrer Datenbank speichern. und verwenden Sie Ihre erforderlichen Validierungen über ViewModel oder Ihre Controller zum Finalisieren der Datenspeicherprozedur. – MRebati

+0

Der Prozess, wie man das macht, ist genau die Frage, nein? –

Verwandte Themen