Announcement

Collapse
No announcement yet.

Validierung unter MVC

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Validierung unter MVC

    Hallo Forum,

    ich brauche heute wieder mal eure Unterstützung. Das Problem liegt unter MVC und zwar bei Validierung der Datenfelder. Ich habe als Beispiel dieses Eingabefeld:

    Code:
                <div>
                    <%: Html.Label("Connection")%>
                </div>
                <div class="editor-field">
                    <%: Html.TextBoxFor(model => model.Connection)%>
                    <%: Html.ValidationMessage("Connection", "*")%>
                </div>
    Ich validiere alle felder durch eine Klasse "public IEnumerable<RuleViolation> getRuleViolations() { }" wie folgt:

    Code:
            public IEnumerable<RuleViolation> getRuleViolations()
            {
                 ...
                 if (String.IsNullOrEmpty(Connection))
                    yield return new RuleViolation("Connection required", "Connection");
                 ...
            }

    Das funktioniert alles auch sehr gut, aber nur bei den Feldern, die in MSSQL als varchar definiert sind. Bei allen anderen Feldern bekomme ich eine doppelte Validierungsmeldung, einmal das, was ihr oben sieht, nämlich "Connection required" und einmal dasselbe in Deutsch "Das Feld "Connection" ist erforderlich.". Ich weiß nicht, woher die zweite Meldung kommt. Kann man diese eventuell abschalten?

    Beim Einfügen solcher Felder, werden diese auch bei if (ModelState.IsValid) {} als Invalid erkannt, was mir sehr merkwürdig vorkommt.

    Danke im Voraus.
    Gruß

  • #2
    Hallo,

    siehe Deaktivieren des ModelStates in ASP.NET MVC

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Hallo,

      vielen Dank für deine Antwort.
      Ich habe es ausprobiert. Leider wird so jetzt nur noch die Deutsche Fehlermeldung ausgegeben und zwar in Form von "Ein Wert ist erforderlich.". Es sollte aber nur meine eigene Meldungen, die ich über "ModelState.AddModelError" hinzufüge, ausgegeben werden und alles anderes soll unterdruckt werden.

      Gruß

      Comment


      • #4
        Hallo,

        ah das wusste ich auch nicht. Ganz abstellen kannst du die Client-seitige Validierung in der web.config im Abschnitt "appSettings" beim Key "ClientValidationEnabled". Diese Einstellung ist global für alle Views. View-spezifisch kann sie per
        [highlight=c#]
        HtmlHelper.ClientValidationEnabled = false;
        [/highlight]
        in der View abgestellt werden.


        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          Wenns recht frickelig wird würde ich das einfach selbst über ViewModel usw. machen. Das ist dann zwar nicht mehr ganz so zentral und generisch. Dafür passiert wesentlich weniger Magie und man hat selbst mehr Kontrolle.

          Comment

          Working...
          X