수색…
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이 채워지지 않은 장소에서도 모델을 사용하고 있기 때문에 FullName을 modelvalidation에서 제외하려는 경우 다음과 같이 할 수 있습니다.
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