¿Cómo se crean las propiedades condicionalmente requeridas con el marco MVC 3 que funcionará con la Validación del lado del cliente y la Validación del lado del servidor cuando JS está deshabilitado? Por ejemplo:MVC 3 Propiedades condicionalmente requeridas
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;}
}
Las reglas en este ejemplo son: Es necesario
Name
yAge
siLocation
no está establecida.Location
es obligatorio solo siName
yAge
no están configurados.- No importa si el nombre, la edad y la ubicación están configurados.
En la vista, necesito el resultado enviado a Action
si se configuran Nombre/Edad. Y un Action
diferente si la Ubicación está configurada. Lo intenté con 2 formularios separados con diferentes Get Url's; esto funciona muy bien, excepto que las reglas de validación están causando problemas. Preferiblemente, me gustaría que el uso de la dirección URL del 2 Get acción separada, es decir,
@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" />
}
Sobre la base de la PersonModel
anterior, si se presenta la ubicación, la validación fallará ya que el PersonModel espera que el nombre y la edad para ser establecer también. Y viceversa con Nombre/Edad.
Dado el ejemplo simulado anterior, ¿cómo se crean las propiedades requeridas condicionalmente con el marco MVC 3 que funcionarán con la Validación del lado del cliente y la Validación del lado del servidor cuando JS está deshabilitado?