9

Ho un editor di modelli per la DropDownList che è contrassegnato con un attributo così:Come posso rendere l'attributo Richiesto per il mio modello di editor DropDownList personalizzato come client?

[AttributeUsage(AttributeTargets.Property)] 
public class DropDownListAttribute : UIHintAttribute 
{ 
    public string SelectListName { get; set; } 
    public DropDownListAttribute(string selectListName) 
     : base("DropDownList", "MVC", selectListName) 
    { 
     SelectListName = selectListName; 
    } 
} 

e si assomiglia a questo:

@using Comair.RI.UI.Core 
@{ 
    var list = this.GetModelSelectList(); 
    var listWithSelected = new SelectList(list.Items, list.DataValueField, list.DataTextField, Model); 
} 
@Html.DropDownListFor(m => Model, listWithSelected, " - select - ") 

mio problema qui è che convalida unico lato server, che è molto fastidioso per un utente di risolvere tutte le convalide lato client, solo per inviare e ottenere una nuova convalida lato server sorpresa.

+0

Potrebbe aggiungere il codice del modello –

+0

@ SławomirRosiek Ciò che vorrebbe dire? Questa è una domanda generale valida per qualsiasi modello. – ProfK

+0

Per me funziona - hai avuto problemi solo con quel controllo o forse con tutti i validatori lato client? –

risposta

1

Se la validazione lato client non funziona, può essere causato da uno dei seguenti motivi:

  1. tuo web.config non ha che enteries:

     
    &ltappSettings> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    </appSettings> 
    
  2. Hai dimenticato di aggiungere script di convalida:

     
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script> 
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script> 
    
  3. I controlli non sono su rrounded da Html.BeginForm o Ajax.BeginForm

  4. validazione lato client può smettere di lavorare in EditorFor dopo l'aggiornamento ad ASP.NET MVC 4 se si utilizza:

    @Html.DropDownListFor(m => Model, listWithSelected, " - select - ") 
    

    Sostituzione Model con m dovrebbe risolvere problema:

    @Html.DropDownListFor(m => m, listWithSelected, " - select - ") 
    
+1

Funziona tutto il resto del mio client. Il mio problema è che solo il mio modello di editor 'DropDownList' non convalida il lato client. – ProfK

+0

Ho aggiunto un'altra possibilità. –

0

Impostare la classe richiesta

@Html.DropDownListFor(m => Model, listWithSelected, " - select - ", new { @class='required' }) 

Vedi ASP MVC 3: How can I do Client side Validation on a Select List?

+0

Bello, tranne il messaggio predefinito è solo "Questo campo è obbligatorio." non è richiesto "Il campo {0}". Trova se collochi i messaggi di convalida in linea, ma non così bene se li raggruppi in qualche 'finestra' da qualche parte. – ProfK

Problemi correlati