Frage

Ich bin mit xval Clientseite Validierung in meiner asp.net MVC2 Web-Anwendung zu verwenden. Trotz der Fehler es geben ist, wenn ich Text in einem numerischen Feld eingeben, versucht es immer noch die Form in die Datenbank zu schreiben. Die falschen Werte werden von 0 und gespeichert in die Datenbank ersetzt. Aber stattdessen sollte es nicht einmal möglich sein, die Form, um zu versuchen und abschicken. Kann mir jemand helfen hier aus?

Ich habe die Attribute festgelegt wie folgt:

[Property]
[ShowColumnInCrud(true, label = "FromPriceInCents")]
[Required]
//[Range(1, Int32.MaxValue)]
public virtual Int32 FromPriceInCents{ get; set; }

Der Controller die Anfrage aussieht wie unten zu kontrollieren; Ich erhalte keine Fehler in diesem Teil.

[AcceptVerbs(HttpVerbs.Post)]
[Transaction]
[ValidateInput(false)]
public override ActionResult Create()
{
  //some foo happens
}

Meine Ansicht sieht aus wie folgt:

<div class="label"><label for="Price">FromPrice</label></div>
<div class="field">
<%= Html.TextBox("FromPriceInCents")%>
<%= Html.ValidationMessage("product.FromPriceInCents")%></div>

Und am Ende der Ansicht i die folgende Regel haben, die in HTML-Code erzeugt die richtigen Validierungsregeln

<%= Html.ClientSideValidation<Product>("Product") %>

Ich hoffe, jemand kann mir helfen mit diesem Problem, Dank im Voraus!

EDIT: 19. April Ich habe gerade herausgefunden, dass es eine normale Taste ist mit anstelle eines Eingangstyp verwendet wird = „Button“ Könnte dies das Problem sein?

<button class="save" type="submit" name="save"><span>Opslaan</span></button>
War es hilfreich?

Andere Tipps

Mein erstes und wichtigste Anliegen hier wäre: warum ist Ihre Anwendung der Werte in der Datenbank an erster Stelle zu speichern? Während xVal eine gute Möglichkeit ist die Anwendung benutzerfreundlich zu machen, haben Sie immer noch Server-Seite Validierung zu tun. Wenn Sie Ihre Daten nicht auf dem Server zu validieren - Sie haben eine masive Sicherheitslücke! Versuchen Sie überprüfen, ob die ModelState.IsValid in Ihrem Controller, bevor die Werte zu speichern.

Nun, von dem, was ich sehe, dass Sie die Registrierung der xVal Validierung mit

<%= Html.ClientSideValidation<Product>("Product") %>

Die Funktionsweise ist es Clientseite Validierung für alle Steuerelemente mit dem Präfix „Produkt“ ermöglicht. Ihre Textbox auf der anderen Seite hat eine ID von FromPriceInCents

So ist die Lösung hier wäre, dies zu tun:

<%= Html.TextBox("FromPriceInCents")%>
<%= Html.ValidationMessage("FromPriceInCents")%>

<%= Html.ClientSideValidation<Product>() %>

UPD3 Ich den Posten aktualisiert. Beseitigt wurde der Code so, dass das Präfix nicht verwendet wird.

Auch ich eine funktionierende Lösung erarbeitet, die eine Arbeitslösung enthält. Liste, Bearbeiten, Erstellen Seite, string und int Eigenschaften und xVal Validierung.

public class Product
{
    [ScaffoldColumn(false)]
    public int Id { get; set; }

    [Required]
    [Range(1,50)]
    public int PriceInCents { get; set; }

    [Required]
    [StringLength(50)]
    public string Name { get; set; }
}

und auf der Ansicht

<%= Html.TextBoxFor(model => model.PriceInCents) %>
<%= Html.ValidationMessageFor(model => model.PriceInCents) %>

Hier ist der Download-Link .. Check it out und mir sagen, ob es funktioniert http://www.flexlabs.org/download/xValTest

Warum Sie das Range-Attribut haben Sie auf Kommentar? Mit den Eigenschaften haben Sie spezifiziert, solange irgendetwas in das Textfeld eingegeben wird, sollte es Clientseite Validierung übergeben.

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