Проверка аннотации данных не работает в ASP.net - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь реализовать аннотацию данных. Я создал модель представления с именем RegisterViewModel со следующими аннотациями данных.

namespace CSBSTest.ViewModel{public class RegisterViewModel
{
    [Required(ErrorMessage = "Filed is required")]

    public string Name { get; set; }
    [Required(ErrorMessage ="Filed is required")]
    [StringLength(9,ErrorMessage ="The Registeration number is not valid")]
    [RegularExpression("BCS15[1-9][1-9][1-9]",ErrorMessage ="The CUST reg number is not valid")]
    public string RegNo { get; set; }
    [Required(ErrorMessage = "Filed is required")]
    [EmailAddress]
    public string Email { get; set; }
    [Required(ErrorMessage = "Filed is required")]
    [MaxLength(11)]
    public string Phone { get; set; }
    [Required]
    [MinLength(6,ErrorMessage ="Minimun length must be 6 charccters")]
    public string Password { get; set; }
    [Required]
    [Compare("Password")]
    public string ConfirmPassword { get; set; }
}

}

Затем я создал форму для RegisterViewModel, как показано ниже:

@model CSBSTest.ViewModel.RegisterViewModel@{
ViewBag.Title = "SignupForm";
Layout = "~/Views/Shared/_NavBar.cshtml";}
<head>
<link href="~/Content/Site.css" rel="stylesheet" /></head>
<h2 id="head">
Let's get Started
</h2>
<form action="~/Home/SignUp" method="post" style="padding:70px">
    <div class="form-row">
    <div class="form-group col-md-3">
        <label for="inputEmail4">Full Name</label>
        <input type="text" class="form-control" id="inputEmail4" placeholder="Muhammad Ali" @Html.TextBoxFor(x => x.Name)
               @Html.ValidationMessageFor(x => x.Name)
    </div>
    <div class="form-group col-md-3">
        <label for="inputPassword4">Email</label>
        <input type="email" class="form-control" id="inputPassword4" placeholder="EaF@gmail.com" @Html.TextBoxFor(x => x.Email)
               @Html.ValidationMessageFor(x => x.Email)
    </div>

</div>
<div class="form-row">
    <div class="form-group col-md-3">
        <label for="inputEmail4">Password</label>
        <input type="password" class="form-control" @Html.TextBoxFor(x => x.Password)
               @Html.ValidationMessageFor(x => x.Password)
    </div>
    <div class="form-group col-md-3">
        <label for="inputAddress">Confirm Password</label>
        <input type="password" class="form-control" id="inputAddress" @Html.TextBoxFor(x => x.ConfirmPassword)
               @Html.ValidationMessageFor(x => x.ConfirmPassword)
    </div>


</div>
<div class="form-row">
    <div class="form-group col-md-3">
        <label for="inputAddress2">Cust Reg No</label>
        <input type="datetime" class="form-control" id="inputAddress2" placeholder="20 May 1996" @Html.TextBoxFor(x => x.RegNo)
               @Html.ValidationMessageFor(x => x.RegNo)
    </div>
    <div class="form-group col-md-3">
        <label for="inputAddress2">Phone Number</label>
        <input type="number" class="form-control" id="inputAddress2" placeholder="+92-3245009538" @Html.TextBoxFor(x => x.Phone)
               @Html.ValidationMessageFor(x => x.Phone)
    </div>
</div>

<div class="form-row">
    <div class="form-group col-md-3">
        @Html.Label("Dept", "Select Department")
        @Html.DropDownList("Department", new SelectList(new[] { "IT", "CS" }), new { @class = "form-control" })
    </div>
</div>
<br />
<button id="bt" type="submit" class="btn btn-primary">Register</button>


</form>

когда я отправляю форму, она отправляется, даже если ни одно поле не заполняется без отображения сообщений с аннотациями или это не препятствует отправке пустой формы. Я пытался добавить валидированные и беспрепятственные библиотеки в голову, но это все равно не сработало. Любая помощь высоко ценится. Спасибо заранее

Ответы [ 3 ]

0 голосов
/ 29 апреля 2018

Я запускал проект с Ctrl + F5 и аннотациями не работали, а CSS не загружался должным образом. Я перезапустил Visual Studio и запустил проект в режиме отладки, он работал правильно, Большое спасибо всем, кто ответил и помог.

0 голосов
/ 09 мая 2018

1) Пожалуйста, убедитесь, что ваш веб .config имеет код ниже.

<appSettings>
   <add key="ClientValidationEnabled" value="true" />
   <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>

2) Пожалуйста, проверьте, добавили ли вы ссылку на файлы Jquery ниже на вашей странице или странице макета вашего проекта. jquery.validate.unobtrusive.js и jquery.validate.js

0 голосов
/ 28 апреля 2018

Я считаю, что путаница здесь заключается в том, что вы используете как теги <input>, так и помощники Html.TextBoxFor. Вам не нужно и то и другое, метод Html.TextBoxFor фактически создаст для вас входные теги. Вы можете предоставить дополнительные аргументы для TextBoxFor, чтобы ваш тег <input> содержал атрибуты class (и любой другой атрибут, который вы пожелаете).

Ознакомьтесь с этим руководством для получения дополнительной информации и хороших примеров для подражания.

Полагаю, если вы исправите свои смешанные теги, вы обнаружите, что проверка начинает работать.

...