2016-08-02 17 views
1

Momentan erstelle ich ein Onlineformular, daher habe ich ein Problem mit der Validierung des Optionsfelds. Ich habe es geschafft, eine Validierungsnachricht für alle meine Textfelder zu erstellen, aber es scheint so, als ob das Erstellen einer Validierungsnachricht für Radiobutton anders ist als das Erstellen einer Validierung für eine Textbox?
Validierungsnachricht für Optionsfeld in MVC

Mein Problem ist
I Radioknopf für Geschlecht habe, „männlich“ und „weiblich“, wie soll ich dieses Feld validieren?

Mein Ansichtsmodell

public class PersonalValidator 
{ 
    public int personalInfoId { get; set; } 

    [Required(ErrorMessage="Gender is required")] 
    public string gender { get; set; } 

    public string occupation { get; set; } 
    public Nullable<int> maritalId { get; set; } 
    public Nullable<int> registrationId { get; set; } 
    public Nullable<int> eduInfoId { get; set; } 
    public Nullable<int> monthlyId { get; set; } 
} 

Mein Razor

 <tr> 
     <td> Gender</td> 
     <td colspan="2"> 
      @Html.RadioButtonFor(model => model.personalValid.gender, "Male") Male 
      @Html.ValidationMessageFor(model => model.personalValid.gender) 

      @Html.RadioButtonFor(model => model.personalValid.gender, "Female") Female 
      @Html.ValidationMessageFor(model => model.personalValid.gender) 
     </td> 
<tr> 

mein Controller

  [HttpPost] 
    public ActionResult TestValidation(RegisterInfoPA viewmodel) 
    { 
     using (var database = new TMXEntities()) 
     { 
      if(ModelState.IsValid) 
      { 
       var personalVM = viewmodel.personalValid;     

        //save personal info 
        personalInfo personalDB = new personalInfo(); 

        personalDB.gender = personalVM.gender;          
        personalDB.occupation = personalVM.occupation; 
        personalDB.maritalId = personalVM.maritalId; 
        personalDB.eduInfoId = personalVM.eduInfoId; 
        personalDB.monthlyId = personalVM.eduInfoId; 

        db.personalInfoes.Add(personalDB); 
        db.SaveChanges(); 

        return RedirectToAction("SuccessfullyCreated"); 

      } 

      return View(); 
     } 
    } 
+0

Was müssen Sie validieren? Sind beide Radiobuttons zu Beginn ausgeschaltet und möchten Sie prüfen, ob eine ausgewählt wurde? –

+2

Ja, beide Optionsfelder sind nicht ausgewählt. Wenn der Benutzer das Formular absenden möchte, wird die Bestätigungsmeldung angezeigt, die den Benutzer auffordert, eine auszuwählen. Benutzer kann es nicht abgewählt lassen. – user3431310

+1

Was sind die Fehler, die Sie bekommen? – user3643092

Antwort

1

Ich weiß, es ist ein bisschen spät, aber es könnte jemand anderem helfen. Da Sie Viewmodel verwenden, denke ich, dass die einfachste und beste Lösung AddModelError ist.

in Ihrem Controller

[HttpPost] 
public ActionResult TestValidation(RegisterInfoPA viewmodel) 
{ 
    using (var database = new TMXEntities()) 
    { 
     //VALIDATE FIRST 
     MainValidation(viewmodel) 

     //Proceed to process data 
     -----------codes------------------   
    } 
} 

    public void MainValidation(RegisterInfoPA validationData) 
    { 
      if (validationData.personalValid.gender == null) 
      { 
       ModelState.AddModelError("gender", "Please select gender"); 
      } 

    } 

Hoffnung, das hilft.