Asp.net mvc中的归属验证

时间:2017-08-24 19:20:35

标签: asp.net asp.net-mvc asp.net-mvc-4

我正在尝试验证用户在表单中输入的字段。我尝试了这个,但它根本没有验证字段。即使我没有输入记录也没有给出错误信息。还有什么我需要添加像脚本或库? 哪个库要添加?

查看模型(类):

    public class RegisterationLoginViewModel
{
    [Required]
    public string Email { get; set; }
    [Required]
    public string pass { get; set; }
    [Required]
    public string Full_Name { get; set; }
    [Required]
    public string Mobile_Number1 { get; set; }
    [Required]
    public DateTime Date_of_Birth { get; set; }
    [Required]
    public string Gender { get; set; }
    [Required]
    public string CNIC { get; set; }
    public DateTime Created_On { get; set; }
    [Required]
    public string City { get; set; }
    [Required]
    public string Provience { get; set; }
    [Required]
    public string Country { get; set; }
    [Required]
    public string Home_Address { get; set; }
    [Required]
    public string User_Role { get; set; }
    public int Approved { get; set; }

}

以下是视图:

    <form action="@Url.Action("Index","SignUp")" class="form-horizontal" method="post">

Full Name @Html.TextBoxFor(x => x.Full_Name, new { @class = "form-control" })
@Html.ValidationMessageFor(x=>x.Full_Name)
<br />
Email @Html.TextBoxFor(x => x.Email, new { @class = "form-control" })
@Html.ValidationMessageFor(x => x.Email)
<br />
Password  @Html.TextBoxFor(x => x.pass, new { @class = "form-control", type = "password" })
@Html.ValidationMessageFor(x => x.pass)
<br />
Date of Birth @Html.TextBoxFor(x => x.Date_of_Birth, new { @class = "form-control" })
@Html.ValidationMessageFor(x => x.Date_of_Birth)
<br />
Address @Html.TextBoxFor(x => x.Home_Address, new { @class = "form-control" })
@Html.ValidationMessageFor(x => x.Home_Address)
<br />
Mobile Number-1 @Html.TextBoxFor(x => x.Mobile_Number1, new { @class = "form-control" })
@Html.ValidationMessageFor(x => x.Mobile_Number1)
<br />
CNIC @Html.TextBoxFor(x => x.CNIC, new { @class = "form-control" })
@Html.ValidationMessageFor(x => x.Full_Name)
<br />
Country @Html.TextBoxFor(x => x.Country, new { @class = "form-control" })
@Html.ValidationMessageFor(x => x.Country)
<br />
Provience @Html.TextBoxFor(x => x.Provience, new { @class = "form-control" })
@Html.ValidationMessageFor(x => x.Provience)
<br />
City @Html.TextBoxFor(x => x.City, new { @class = "form-control" })
@Html.ValidationMessageFor(x => x.City)
<br />

@{
    List<SelectListItem> listItems = new List<SelectListItem>();
    listItems.Add(new SelectListItem
    {
        Text = "Student",
        Value = "Student"
    });
    listItems.Add(new SelectListItem
    {
        Text = "Trainer",
        Value = "Trainer",
        Selected = true
    });

}

@Html.DropDownListFor(model => model.User_Role, listItems, "-- Select Role --")
@Html.ValidationMessageFor(x => x.User_Role)
<br />
<br />
@{
    List<SelectListItem> listItems2 = new List<SelectListItem>();
    listItems2.Add(new SelectListItem
    {
        Text = "Male",
        Value = "Male"
    });
    listItems2.Add(new SelectListItem
    {
        Text = "Female",
        Value = "Female",
        Selected = true
    });

}

@Html.DropDownListFor(model => model.Gender, listItems2, "-- Select Gender --")
@Html.ValidationMessageFor(x => x.Gender)
<br />
<br />
<button type="submit" class="btn btn-primary"> Sign Up </button>

1 个答案:

答案 0 :(得分:0)

您的HttpPost操作中的当前代码始终使用RedirectToAction方法返回RedirectResult。如果要在提交表单时查看模型验证框架生成的验证错误,则需要返回相同的视图。

您也可以使用ModelState.IsValid属性来检查提交的表单数据是否通过了验证。如果是这样,您可以继续执行代码,例如保存到数据库并重定向。

[HttpPost] 
public ActionResult Index(RegisterationLoginViewModel svm)
{ 
   if(ModelState.IsValid)
   {
     //save
     var result = db.Register(svm);
     return RedirectToAction("ThankYou_View");
   }
   //Model validation failed. Let's return to same view.
   // to do : Make sure to reload any stuff you need in view (Ex: ViewBag etc)
   return View(svm);
}