Frage

Ich kann nicht xVal Validierung Arbeit mit stark typisierte Viewmodels.

Jede Methode in xVal scheint ein Präfix zu wollen, die nicht verwendet wird, wenn mit stark typisierte Viewmodels zu tun.

Meine Ansicht enthält Code ähnlich wie diese:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<ContactForm>" %>
<%= Html.TextBox("firstName", Model.FirstName) %>

Und der folgende Code geht in der Steuerung:

try
{
    var theModel = form.ToModel();
    _contactRepository.Save(theModel);
}
catch (RulesException ex)
{
    ex.AddModelStateErrors(ModelState, string.Empty); // Passing string.Empty for prefix, since I don't use prefixes.
}

return View(form);

Allerdings ist der obige Code nicht funktionieren. Ich habe sicherlich etwas verpasst haben, aber nicht wissen, was passiert. Dies ist mein erstes Mal mit xVal.

Dankbar für jede Hilfe!

War es hilfreich?

Lösung

Ich denke, das Problem in der Tatsache, dass Sie Präfixe nicht verwenden. Wenn Sie die Model debuggen können Sie Validierungen für Dinge wie „.FirstName“ sehen, obwohl sie wie ‚Vorname‘ sein sollte. Aufgrund der, dass die Client-seitige Validierung Zusammenfassungen und solche Sachen nicht, diese Validierung Fehlermeldungen nicht angezeigt.

Ich denke, dies ein Fehler in xVal ist.

Andere Tipps

Um Adrians Punkt können wir nicht sehen, wenn Sie DataAnnotations nach Ihrer Ansicht Modell verwenden, oder wenn Sie jede Art von Läufer in dieser Artikel . Sie erhalten ein etwas wie die DataAnnotationsValidationRunner verwenden müssen, um es Validierung auf jeder Eigenschaft Ihrer Ansicht Modell durch die Validierung als angegeben auszuführen erwähnt Attribute, die Sie verwenden (zum Beispiel Required, Reichweite, usw.).

Grundsätzlich sind die Schritte wäre:

  1. Rufen Sie Ihre aktualisierte stark typisierte Ansicht Modell aus der Form.
  2. Führen Sie das Modell an Ihre DataAnnotationsValidationRunner, sammeln alle Fehler, die aufgrund
  3. Wenn es irgendwelche Fehler (Errorinfo-Objekte), werfen sie als RulesException
  4. die RulesException Fang und die Validierung Ausnahmen zu Ihrem Modell hinzufügen die AddModelStateErrors Methode die Ausnahme mit
  5. Überprüfen Sie, ob ModelState.IsValid, und wenn es nicht, vertreten Ihre Ansicht ist, die dank Ihrer Ausnahmebehandlung wird nun die Fehler-Modell gebunden zu Ihrer Ansicht haben. Sie werden dafür sorgen, müssen Sie die entsprechende ValidationMessage haben html Helfer an Ort und Stelle nennt, auch durch die verlinkten Artikel verwiesen wird.

Ihr Posting nicht annähernd präzise genug für mich, um herauszufinden, was falsch gehen, aber Sie können eine voll funktionsfähige Demo-Website am Ende der Blog-Artikel . Der Artikel beschreibt auch alles, was Sie Schritt für Schritt tun müssen, so sollte dies Sie xVal Laufen helfen bekommen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top