Buongiorno.
Sto sviluppando un progetto con Asp.net MVC 4.
Ho creato, per verificare che l'id di un elemento non sia già stato inserito, un ValidationController con il seguente codice:
  
	Codice:
	[OutputCache(Location = OutputCacheLocation.None, NoStore = true)]
    public class ValidationController : Controller
    {
        private RifiutiEntities db = new RifiutiEntities();
        //Codice per la validazione del campo ID_FUSTO, per verificare se è già stato inserito.
        public JsonResult IsIDFUSTOAvailable(string ID_FUSTO)
        {
            if (!PresenzaIDFUSTO(ID_FUSTO))
                return Json(true, JsonRequestBehavior.AllowGet);
            else
            {
                return Json("Attenzione, l'identificativo  " + ID_FUSTO + " è già stato inserito.", JsonRequestBehavior.AllowGet);
            }
        }
        private bool PresenzaIDFUSTO(string ID_FUSTO)
        {
            var fusto = db.TBL_NUOVO_FUSTO.FirstOrDefault(f => f.ID_FUSTO == ID_FUSTO);
            return (fusto != null);
        }
 
Tra le proprietà della classe interessata ho inserito questo:
	Codice:
	[Required]
        [Display(Name = "ID_FUSTO")]
        [Remote("IsIDFUSTOAvailable", "Validation")]//Codice per validazione ID già presente
        public string ID_FUSTO { get; set; }
 
La validazione funziona, nel senso che appare correttamente il messaggio che mi avvisa se l'id risulta già inserito, però quando vado a cliccare sul bottone di inserimento/creazione, tenta comunque di inserire i dati sul database, con conseguente pagina di errore del server per tentativo di inserimento chiave duplicata.
In debug, con il seguente codice:
	Codice:
	[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create(TBL_NUOVO_FUSTO tbl_nuovo_fusto)
        {
            
            if (ModelState.IsValid)
            {
                db.TBL_NUOVO_FUSTO.Add(tbl_nuovo_fusto);
                db.SaveChanges();
                return RedirectToAction("Index");
            }
 
ho notato che, anche se appare correttamente il messaggio di validazione "id già inserito", "ModelState.IsValid" risulta sempre "True", a differenza degli altri tipi di validazione per le altre proprietà quali "[Required]","[StringLength(50)]", ecc., dove se i campi non rispettano i valori di validazione, il "ModelState.IsValid" risulta "False" ed evita così il  "db.SaveChanges()".
Qualche consiglio?