Suche…


Validieren Sie das Modell in ActionResult

[HttpPost]
public ActionResult ContactUs(ContactUsModel contactObject)
{
    // This line checks to see if the Model is Valid by verifying each Property in the Model meets the data validation rules
    if(ModelState.IsValid)
    {
    }
    return View(contactObject);
}

Die Modellklasse

public class ContactUsModel
{
    [Required]
    public string Name { get; set; }
    [Required]
    [EmailAddress] // The value must be a valid email address
    public string Email { get; set; }
    [Required]
    [StringLength(500)] // Maximum length of message is 500 characters
    public string Message { get; set; }
}

Entfernen Sie ein Objekt aus der Überprüfung

Angenommen, Sie haben folgendes Modell:

public class foo
{
    [Required]
    public string Email { get; set; }

    [Required]
    public string Password { get; set; }

    [Required]
    public string FullName { get; set; }
}

Sie möchten jedoch FullName von der Modellvalidierung ausschließen, da Sie das Modell auch an einem Ort verwenden, an dem FullName nicht ausgefüllt ist. Dies kann auf folgende Weise geschehen:

ModelState.Remove("FullName");

Benutzerdefinierte Fehlermeldungen

Wenn Sie benutzerdefinierte Fehlermeldungen bereitstellen möchten, gehen Sie folgendermaßen vor:

public class LoginViewModel
{
    [Required(ErrorMessage = "Please specify an Email Address")]
    [EmailAddress(ErrorMessage = "Please specify a valid Email Address")]
    public string Email { get; set; }
    
    [Required(ErrorMessage = "Type in your password")]
    public string Password { get; set; }
}

Wenn sich Ihre Fehlermeldungen in einer ResourceFile (.resx) befinden, müssen Sie den ResourceType und den ResourceName angeben:

public class LoginViewModel
{
    [Required(ErrorMessageResourceType = typeof(ErrorResources), ErrorMessageResourceName = "LoginViewModel_RequiredEmail")]
    [EmailAddress(ErrorMessageResourceType = typeof(ErrorResources), ErrorMessageResourceName = "LoginViewModel_ValidEmail")]
    public string Email { get; set; }
    
    [Required(ErrorMessageResourceType = typeof(ErrorResources), ErrorMessageResourceName = "LoginViewModel_RequiredPassword")]
    public string Password { get; set; }
}

Erstellen benutzerdefinierter Fehlermeldungen im Modell und im Controller

Nehmen wir an, Sie haben folgende Klasse:

public class PersonInfo
{
    public int ID { get; set; }

    [Display(Name = "First Name")]
    [Required(ErrorMessage = "Please enter your first name!")]
    public string FirstName{ get; set; }

    [Display(Name = "Last Name")]
    [Required(ErrorMessage = "Please enter your last name!")]
    public string LastName{ get; set; }

    [Display(Name = "Age")]
    [Required(ErrorMessage = "Please enter your Email Address!")]
    [EmailAddress(ErrorMessage = "Invalid Email Address")]
    public string EmailAddress { get; set; }
}

Diese benutzerdefinierten Fehlermeldungen werden ModelState.IsValid , wenn ModelState.IsValid den ModelState.IsValid false zurückgibt.

Sie und ich wissen jedoch, dass es nur eine E-Mail-Adresse pro Person geben kann. Andernfalls senden Sie E-Mails an möglicherweise falsche Personen und / oder mehrere Personen. Hier kommt das Einchecken des Controllers ins Spiel. Nehmen wir an, die Leute erstellen Konten, die Sie über die Aktion "Erstellen" speichern können.

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ID, FirstName, LastName, EmailAddress")] PersonInfo newPerson)
{
    if(ModelState.IsValid) // this is where the custom error messages on your model will display if return false
    {
        if(database.People.Any(x => x.EmailAddress == newPerson.EmailAddress))  // checking if the email address that the new person is entering already exists.. if so show this error message
        {
            ModelState.AddModelError("EmailAddress", "This email address already exists! Please enter a new email address!");
            return View(newPerson);
        }
        
        db.Person.Add(newPerson);
        db.SaveChanges():
        return RedirectToAction("Index");
    }

    return View(newPerson);
}

Ich hoffe, dass dies jemandem helfen kann!

Modellvalidierung in JQuery.

In Fällen, in denen Sie die Modellvalidierung mithilfe von Jquery sicherstellen müssen, kann die Funktion .valid () verwendet werden.

Die Modellklassenfelder

[Required]
[Display(Name = "Number of Hospitals")]
public int Hospitals{ get; set; }
[Required]
[Display(Name = "Number of Beds")]
public int Beds { get; set; }

Der View-Code

@using (Html.BeginForm(new {id = "form1", @class = "form-horizontal" }))
{

<div class="divPanel">
  <div class="row">
    <div class="col-md-3">                
            @Html.LabelFor(m => m.Hospitals)
            @Html.TextBoxFor(m => m.Hospitals, new { @class = "form-control", @type = "number"})
            @Html.ValidationMessageFor(m => m.Hospitals)

    </div>
    <div class="col-md-3">

            @Html.LabelFor(m => m.Beds)
            @Html.TextBoxFor(m => m.Beds, new { @class = "form-control", @type = "number"})
            @Html.ValidationMessageFor(m => m.Beds)
    </div>
<div class="col-md-3">             
        <button type=button  class="btn btn-primary" id="btnCalculateBeds"> Calculate Score</button>
    </div>
 </div>

  </div>
 }

Das Skript zur Validierungsprüfung.

$('#btnCalculateBeds').on('click', function (evt) {
evt.preventDefault();

if ($('#form1').valid()) {
//Do Something.
}
}

Stellen Sie sicher, dass die Dateien jquery.validate und jquery.validate.unobtrusive in der Lösung vorhanden sind.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow