2017-08-24 1 views
-1

J'essaie de valider les champs entrés par l'utilisateur dans le formulaire. J'ai essayé ceci mais il ne valide pas du tout les champs. Même si je n'entre aucun enregistrement il ne donne pas de message d'erreur. Y at-il autre chose que j'ai besoin d'ajouter comme script ou bibliothèques? quelle bibliothèque ajouter?Validation d'attribut dans Asp.net mvc

Voir modèle (classe):

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

} 

Voici la vue:

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

+0

À quoi ressemble votre méthode d'action httppost? – Shyju

+0

[HttpPost] Index du public ActionResult (RegisterationLoginViewModel de svm) { if (SVM == null) { RedirectToAction ("Null_SignUp_View"); } chaîne RegisterStudent_Response = db.Register (svm); si (RegisterStudent_Response == "1") { RedirectToAction ("ThankYou_View"); } return RedirectToAction ("ThankYou_View"); } –

Répondre

0

Votre code actuel dans votre action HttpPost est toujours revenir un RedirectResult en utilisant la méthode RedirectToAction. Si vous souhaitez voir les erreurs de validation générées par le cadre de validation du modèle lorsque vous envoyez le formulaire, vous devez revenir à la même vue.

Vous pouvez également utiliser la propriété ModelState.IsValid pour vérifier si les données de formulaire soumises ont réussi les validations. Si c'est le cas, vous pouvez continuer à exécuter votre code comme enregistrer sur db et rediriger.

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