Поиск…


Проверка модели в 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);
}

Класс модели

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; }
}

Удалить объект из проверки

Скажем, у вас есть следующая модель:

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

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

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

Но вы хотите исключить FullName из modelvalidation, потому что вы используете модель также в том месте, где FullName не заполнено, вы можете сделать это следующим образом:

ModelState.Remove("FullName");

Пользовательские сообщения об ошибках

Если вы хотите предоставить пользовательские сообщения об ошибках, вы сделаете это следующим образом:

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; }
}

Когда ваши сообщения об ошибках находятся в ResourceFile (.resx), вы должны указать ResourceType и ResourceName:

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; }
}

Создание пользовательских сообщений об ошибках в модели и контроллере

Предположим, что у вас есть следующий класс:

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; }
}

Эти настраиваемые сообщения об ошибках появятся, если ваш ModelState.IsValid вернет false.

Но, вы, как и я знаю, что на человека может быть только 1 адрес электронной почты, иначе вы будете отправлять электронные письма потенциально неправильным людям и / или нескольким людям. Здесь происходит проверка в контроллере. Поэтому давайте предположим, что люди создают учетные записи для вас, чтобы сохранить их через Create Action.

[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);
}

Надеюсь, это поможет кому-то!

Проверка модели в JQuery.

В тех случаях, когда вам необходимо обеспечить проверку модели с помощью JQuery, можно использовать функцию .valid ().

Поля класса модели

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

Код просмотра

@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>
 }

Скрипт проверки проверки.

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

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

Убедитесь, что файлы jquery.validate и jquery.validate.unobtrusive присутствуют в решении.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow