私は.net 4.5、MVC 4を使用しており、フォームにモデルバインダーを使用しています。エラーをリストとして表示する HTML 検証の概要がありますが、これは正常に機能します。
私がやりたいのは、単一のモデル プロパティが ModelState に基づいてエラーをトリガーしたかどうかを取得することです。その場合は、「エラー」CSS クラスを指定して赤にします。下記を参照してください。
<div class="controls">
@{
// does this element have an error??
if (Model.LastName == error)
{
@Html.ValidationMessageFor(x => x.LastName)
@Html.TextBoxFor(x => x.LastName, new { type = "text", id = "LastName", name = "LastName", value = Model.LastName, @class = "Error" })
}
else
{
@Html.ValidationMessageFor(x => x.LastName)
@Html.TextBoxFor(x => x.LastName, new { type = "text", id = "LastName", name = "LastName", value = Model.LastName, })
}
}
}
検証の概要
@{
if (ViewBag.Error != null && ViewBag.Error == true)
{
<div class="alert alert-error">
<h3>Error</h3>
<p>@ViewBag.Message</p>
<p>@Html.ValidationSummary(false)</p>
</div>
}
else if (ViewBag.Error != null && ViewBag.Error == false)
{
<div class="alert alert-success">
<h3 style="color:green;">Details Updated Successfully Received</h3>
<p style="color:green;">@ViewBag.Message</p>
</div>
}
}
モデル
public class UpdateDetailsModel
{
public VIPSessionObject VIPSessionObject { get; set; }
[Required]
[DataType(DataType.Text, ErrorMessage = "Please Enter your First Name")]
public string FirstName { get; set; }
[Required]
[DataType(DataType.Text, ErrorMessage = "Please Enter your Last Name")]
public string LastName { get; set; }
[Required]
[DataType(DataType.PhoneNumber, ErrorMessage = "Please Enter your Phone Number")]
public string Telephone { get; set; }
[Required]
[DataType(DataType.EmailAddress, ErrorMessage = "Please Enter your Email Address")]
public string Email { get; set; }
[Required]
[DataType(DataType.Password, ErrorMessage = "Please Enter your Motorpoint VIP Password")]
public string Password { get; set; }
[Required]
[DataType(DataType.Password, ErrorMessage = "The Passwords must match")]
[Compare("Password")]
public string PasswordConfirm { get; set; }
[Required]
[DataType(DataType.Date, ErrorMessage = "Please Enter your Date of Birth")]
public DateTime DateOfBirth { get; set; }
[Required]
public int VehiclesInHousehold { get; set; }
[Required(ErrorMessage = "Please select the number of cars in your household")]
public int NoOfVehicles { get; set; }
}