Anwenden von CSS, Html.ValidationSummary zur Laufzeit
Ich bin mit dem Bau meines ersten MVC4 Webseite, und ich möchte, um zu zeigen, Erfolgsmeldung, wenn die Seite erfolgreich übermittelt. Ich habe erreicht, indem ModelState.AddModelError(("", "Data successfully saved.");
aber es zeigt in der Farbe rot. Ich möchte verschiedene css zur Laufzeit, basierend auf bestimmten Bedingungen.
Dank.
pingen Sie den code.. wo u r mit
InformationsquelleAutor MaxPayne | 2013-03-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Normalerweise, wenn das Ergebnis einer action-Methode erfolgreich eine Umleitung geschieht, ist vielleicht das, was Sie wollen, vor allem, wenn Ihr Ergebnis nicht ein json-Ergebnis. Aber wenn Sie wieder die gleiche Ansicht nach dem post dann Sie tun es falsch. Wenn die
ModelState
ist gültig auf ein post, das heißt, wenn die überprüfung bestanden (z.B. erforderliche Felder sind mitgeliefert), und fügen Sie eine Fehlermeldung " tutModelState.AddModelError(("", "Data successfully saved.")
dann machen Sie dieModelState
gehen in einen ungültigen Zustand. Das ist der Grund, warum Sie haben die Farbe rot.Nun vorausgesetzt, Sie wirklich wollen, um zurückzukehren das gleiche anzeigen, dann nehme ich an, Sie haben so etwas wie:
Was sollten Sie stattdessen so etwas wie dieses:
Dann auf Ihrer Ansicht, so etwas wie:
Beachten Sie, dass Sie nicht brauchen eine zusätzliche
@
vor, wenn,, der code nimmt an, dass es innerhalb einerform
tag, mit@using
. Und dann für die css:Können Sie tatsächlich ViewData oder ViewBag. Mehr wissen über den Unterschied von den beiden kann man besuchen Sie diese Seite SO.
UPDATE:
Ihre Ansicht:
Detail [IMG]i45.tinypic.com/b6stiv.png[/IMG] i45.tinypic.com/b6stiv.png
Wenn Sie Lesen meine Antwort wieder werden Sie feststellen, dass müssen Sie die ViewBag-code, der in der
if (ModelState.IsValid...
, dann den rest von meinem Vorschlag.Ich habe deine Antwort gelesen und ich weiß jetzt schon diesen Ansatz, dass ich diesen Ansatz, den ich erhalten haben 1) @viewbag div und 2) ValidationSummary. Also, warum können wir nicht eine einzige ValidationSummary zu zeigen, Fehler-und Erfolgsmeldungen. Ich habe Sie nicht bewusst sind, können wir zeigen, informative Nachrichten, die im validationsummary. Ich nur nicht, wie man die Methode für das hinzufügen von dynamischen CSS validationsummary-gemäß Bedingungen.
Sein Sie versichert, ich kenne Sie alle, wovon Sie reden 😉 Sie Sind sich bewusst, können Sie nähern sich Ihrem problem als pro meinen Vorschlag, und Sie können es tun, einen anderen Weg zu? Ich bevorzuge die haben es getrennt, so das ValidationSummary-Fehler zeigt und komplett ein anderes element zeigen eine Erfolgsmeldung. Wenn du weißt, wie man eine ViewBag, wie Sie erwähnt haben, dann können Sie es verwenden, um an den Erfolg der post und ändern Sie die css entsprechend anpassen. Ich werde versuchen, aktualisieren Sie meine Antwort an Ihre Vorlieben.
InformationsquelleAutor von v.
Empfehle ich die Verwendung von TempData anstatt Sie zu verändern validationsummary und @von beschrieben es sehr gut. Die Verwendung von bootstrap. Sie könnte so etwas tun:
Controller
Ansicht
InformationsquelleAutor JoshYates1980
Von, auch ich Schätze Ihre Antwort, aber ich Stimme mit MaxPayne, dass Sie nicht ganz eine Antwort für die Frage, eher ein umgehen IMO.
Auch ich bin auf der Suche nach einer Möglichkeit, um Stil der ValidationSummary-ohne das extra-Gepäck mit der ViewBag.
Ich bin damit einverstanden, dass Sie sollten nicht zurück zu der gleichen Ansicht, nachdem eine post, es sei denn, es gibt Fehler, aber ich glaube, es gibt Zeiten, in denen man vielleicht ändern möchte ValidationSummary-Stil dynamisch, ohne das ViewBag.
So weit dies ist meine einzige führen http://westcountrydeveloper.wordpress.com/2011/07/06/mvc-validation-part-4-styling-the-validation-controls/
Ich nehme an, Sie könnten die Verwendung einiger JQuery ändern Sie das element die css-Attribute basierend auf der Validierung Reaktion.
InformationsquelleAutor Darrell Lloyd Harvey