Domanda

sto usando xval per utilizzare la convalida lato client nella mia applicazione Web asp.net mvc2.Nonostante gli errori visualizzati quando inserisco testo in un campo numerico, tenta comunque di inviare il modulo al database.I valori errati vengono sostituiti da 0 e salvati nel database.Ma invece non dovrebbe essere nemmeno possibile provare a inviare il modulo.Qualcuno può aiutarmi qui?

Ho impostato gli attributi come di seguito:

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

Il controller che cattura la richiesta appare come di seguito;Non ricevo errori in questa parte.

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

La mia visione è la seguente:

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

E alla fine della visualizzazione ho la seguente regola che nel codice html genera le regole di convalida corrette

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

Spero che qualcuno possa aiutarmi con questo problema, grazie in anticipo!

MODIFICARE:19 aprile Ho appena scoperto che c'è un pulsante normale con l'uso invece di un input type="Button" Potrebbe essere questo il problema?

<button class="save" type="submit" name="save"><span>Opslaan</span></button>
È stato utile?

Altri suggerimenti

La mia prima e principale preoccupazione qui sarebbe:perché la tua app salva i valori nel database in primo luogo?Sebbene xVal sia un buon modo per rendere l'applicazione facile da usare, DEVI comunque eseguire la convalida lato server.Se non convalidi i tuoi dati sul server, hai un enorme buco di sicurezza!Prova a verificare se ModelState.IsValid nel controller prima di salvare i valori.

Ora, da quello che vedo stai registrando la convalida xVal utilizzando

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

Il modo in cui funziona consente la convalida lato client per tutti i controlli con il prefisso "Prodotto".La tua casella di testo invece ha un ID di DaPrezzoInCents

Quindi la soluzione qui sarebbe quella di fare questo:

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

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

UPD3Ho aggiornato il post.Risolto il problema con il codice in modo che il prefisso non venga utilizzato.

Inoltre, ho compilato una soluzione funzionante che contiene una soluzione funzionante.Elenco, Modifica, Crea pagina, proprietà string e int e convalida xVal.

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; }
}

e sulla vista

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

Ecco il link per il download..Controllalo e dimmi se funzionahttp://www.flexlabs.org/download/xValTest

Perché avete l'attributo Gamma commentata? Con le proprietà è stato specificato il tempo che nulla viene immesso nella casella di testo che deve passare la convalida lato client.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top