Wenn ich ein 'Model' -Objekt (wie von LinqToSQL generiert) an einen Controller, kann ich 'ModelState.IsValid' abfragen, und wenn es Validierung Attribute auf einer von die Eigenschaften und der Wert wird nicht validiert, wird auf 'false' gesetzt.Validierung funktioniert nicht mit einfachen Objekten in ASP.NET MVC
Allerdings scheint ModelState.IsValid immer "true" zurückzugeben, wenn ich ein benutzerdefiniertes Objekt meiner eigenen Klasse posten, selbst wenn die Eigenschaften dieser Klasse über Validierungsattribute verfügen und falsche Werte erhalten.
Warum funktioniert das nur mit DataContext-Modellobjekten? Was ist mit diesen Objekten, die sie mit ModelState.IsValid arbeiten lassen, während normale Klassen nicht?
Wie kann ich es mit normalen Klassen arbeiten lassen?
Controller-Code:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult LogIn(MyProject.Website.ViewModels.Shared.LogIn model)
{
if (ModelState.IsValid)
return View(model);
// ... code to log in the user
}
Ansichtsmodell Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using MyProject.Website.Validators;
using System.ComponentModel;
public class LogIn
{
public LogInModes LogInMode { get; set; }
[Required]
[EmailAddress]
public string EmailAddress { get; set; }
public string Password { get; set; }
public bool RememberMe { get; set; }
public string ReturnUrl { get; set; }
}
Ich vermute, es ist nicht das Framework, aber ohne ein wenig Code ist es schwer zu sagen, was das Problem ist. – tvanfosson