Jak utworzyć warunkowo wymagane właściwości za pomocą frameworka MVC 3, który będzie działał z funkcją sprawdzania po stronie klienta, a także sprawdzania poprawności po stronie serwera, gdy JS jest wyłączony? Na przykład:MVC 3 Warunkowo wymagane właściwości
public class PersonModel
{
[Required] // Requried if Location is not set
public string Name {get; set;}
[Range(1, 5)] // Requried if Location is not set
public int Age {get; set;}
[Required] // Only required if Name and Age are not set.
public string Location {get; set;}
}
Przepisy w tym przykładzie to:
Name
iAge
są wymagane, jeśliLocation
nie jest ustawiony.Location
jest wymagany tylko wtedy, gdyName
iAge
nie są ustawione.- Nie ma znaczenia, czy Imię, Wiek i Lokalizacja są ustawione.
W widoku potrzebny jest wynik wysłany do Action
, jeśli ustawiono Name/Age. I inny Action
, jeśli Lokalizacja jest ustawiona. Próbowałem z 2 oddzielnymi formularzami z różnymi adresami URL; działa to wspaniale, z wyjątkiem problemów powodujących reguły sprawdzania poprawności. Preferrably chciałbym korzystanie z 2 oddzielne działanie Get URL, czyli
@model PersonModel
@using(Html.BeginForm("Age", "Person", FormMethod.Post))
{
@Html.TextBoxFor(x => x.Name)
@Html.ValidationMessageFor(x => x.Name)
@Html.TextBoxFor(x => x.Age)
@Html.ValidationMessageFor(x => x.Age)
<input type="submit" value="Submit by Age" />
}
@using(Html.BeginForm("Location", "Person", FormMethod.Post))
{
@Html.TextBoxFor(x => x.Location)
@Html.ValidationMessageFor(x => x.Location)
<input type="submit" value="Submit by Location" />
}
Na podstawie powyższej PersonModel
, jeśli lokalizacja jest złożony, walidacja nie powiedzie się, ponieważ PersonModel spodziewa się imię i wiek będzie również ustawić. I vice versa z Name/Age.
Biorąc powyższy przykład z kodem, w jaki sposób tworzysz warunkowo wymagane właściwości za pomocą frameworka MVC 3, który będzie działał z funkcją sprawdzania po stronie klienta, a także sprawdzania poprawności po stronie serwera, gdy JS jest wyłączony?