Jak utworzyć niestandardowy atrybut sprawdzania poprawności po sprawdzeniu poprawności po stronie klienta bez implementacji IClientValidatable
?ASP.NET MVC: Implementacja sprawdzania poprawności strony klienta z atrybutem bez IClientValidatable
W jaki sposób sprawdza się po stronie klienta po ?
Powodem tego jest to, że używam obiektów z klas w innym projekcie jako modeli w moich widokach i nie chcę dodawać odwołania do tego projektu z System.Web.MVC
.
EDIT, aby dodać więcej informacji:
wiem, że
IClientValidatable
służy do dodawania niestandardowych atrybutów do HTML do późniejszego wykorzystania przez dyskretny walidacji.Wiem, że będę musiał dodać kod javascript, aby dokonać sprawdzenia poprawności w klienta.
Nie wiem, jak użyć informacji z niestandardowego atrybutu sprawdzania poprawności, aby dodać niezbędne atrybuty do kodu HTML, aby dyskretne sprawdzanie poprawności działało.
To mój atrybut niestandardowy walidacji:
public class RequiredGuidAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
Guid? guidValue = value as Guid?;
if (guidValue == null)
return false;
return guidValue != Guid.Empty;
}
}
To moja własność z atrybutem stosowane:
[RequiredGuid(ErrorMessageResourceType = typeof(ClientOrderResources), ErrorMessageResourceName = "RequiredShippingMethod")]
public Guid ShippingMethodId
{
get { return GetProperty(ShippingMethodIdProperty); }
set { SetProperty(ShippingMethodIdProperty, value); }
}
I wreszcie mam renderowania ukryte wejście dla tej właściwości w widoku za pomocą Html.HiddenFor
.
Jak mogę uzyskać komunikat o błędzie z atrybutu, aby zastosować go do kodu HTML? Czy powinienem zrobić to sam, używając Reflection, czy jest lepszy sposób?
A następnie, jak mogę powiedzieć, aby Html.HiddenFor
użyć tych informacji, aby dodać niezbędne atrybuty do kodu HTML?
Przykro mi, ale musi to być sposób, ponieważ atrybuty z DataAnnotations są rozpoznawane przez pomocników html i wyprowadzają html z atrybutami wymaganymi do sprawdzania poprawności klienta. Wiem, że będę musiał dodać skrypt klienta i to nie jest problem. – Marques