Vous pouvez écrire un attribut personnalisé qui peut tester une condition et autoriser un champ vide ou ne pas l'autoriser.
Ci-dessous est une démo simple que je mets ensemble pour les gars ici. Vous devrez modifier pour l'adapter à vos besoins/
using System.ComponentModel.DataAnnotations;
namespace CustomAttributes
{
[System.AttributeUsage(System.AttributeTargets.Property)]
public class MinimumLength : ValidationAttribute
{
public int Length { get; set; }
public MinimumLength()
{
}
public override bool IsValid(object obj)
{
string value = (string)obj;
if (string.IsNullOrEmpty(value)) return false;
if (value.Length < this.Length)
return false;
else
return true;
}
}
}
Modèle;
using CustomAttributes;
namespace Models
{
public class Application
{
[MinimumLength(Length=20)]
public string name { get; set; }
}
}
Contrôleur
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(Application b)
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
if (ModelState.IsValid)
{
return RedirectToAction("MyOtherAction");
}
return View(b);
}
enter code here
Le problème est que je veux que le champ soit obligatoire dans une action du contrôleur, mais pas dans une autre action du contrôleur, pourrait-il y avoir un moyen pour l'attribut personnalisé de savoir quelle action il est actuellement en? – adriaanp
Oui il y a et vous auriez besoin de google car je ne peux pas y penser maintenant. Cela peut vous aider. http://stackoverflow.com/questions/1212429/get-controllername-and-actionname-and-populate-the-viewdata-in-master-page – griegs