Come è possibile creare un attributo di convalida personalizzato con convalida lato client senza implementare IClientValidatable
?ASP.NET MVC: implementazione convalida lato client con attributo senza IClientValidatable
Come convalidare il lato client System.ComponentModel.DataAnnotations.RequiredAttribute
?
La ragione per fare questo è perché sto usando oggetti da classi in un altro progetto come modelli nelle mie viste e non voglio aggiungere il riferimento System.Web.MVC
a quel progetto.
EDIT per aggiungere ulteriori informazioni:
so che
IClientValidatable
viene utilizzato per aggiungere attributi personalizzati per il codice HTML da usare in seguito dalla convalida non invadente.So che sarà necessario aggiungere il codice javascript per effettuare la convalida nel client .
Quello che non so è come utilizzare le informazioni dal l'attributo di convalida personalizzato per aggiungere gli attributi necessari per il codice HTML per la convalida discreto per lavorare.
Questo è il mio attributo di convalida personalizzato:
public class RequiredGuidAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
Guid? guidValue = value as Guid?;
if (guidValue == null)
return false;
return guidValue != Guid.Empty;
}
}
Questa è la mia proprietà con l'attributo applicata:
[RequiredGuid(ErrorMessageResourceType = typeof(ClientOrderResources), ErrorMessageResourceName = "RequiredShippingMethod")]
public Guid ShippingMethodId
{
get { return GetProperty(ShippingMethodIdProperty); }
set { SetProperty(ShippingMethodIdProperty, value); }
}
E finalmente sto rendendo un ingresso nascosto per quella proprietà nella vista utilizzando Html.HiddenFor
.
Ora, come posso ottenere il messaggio di errore dall'attributo per applicarlo all'HTML? Dovrei farlo da solo usando Reflection o c'è un modo migliore?
E poi come posso dire a Html.HiddenFor
di usare quell'informazione per aggiungere gli attributi necessari all'HTML?
Mi dispiace, ma deve essere un modo, perché gli attributi di DataAnnotations sono riconosciuti dagli helper html e generano html con gli attributi richiesti per la convalida del client. So che dovrò aggiungere script client e questo non è un problema. – Marques