2016-04-30 2 views
-1

Ich bin neu in ASP.net MVC. Ich stecke gerade fest. Ich erweiterte das Identitätsmodell um Bio-Daten wie Vorname, Nachname, Geschlecht usw.Wie kann ich radiobutton ausgewählten Wert innerhalb erweiterten Identity-Modell innerhalb

Ich möchte das Geschlecht als Optionsfeld gerendert haben, kann ich App ohne Fehler ausführen, aber es wird nicht die Registrierung übergeben. Dieses Problem begann, nachdem ich das Geschlecht von Textfeld zu Radio-Button geändert habe. Hier ist mein Code.

Teil meines Modells:

[Display(Name = "Middle Name")] 
    [MaxLength(25)] 
    public string MiddleName { get; set; } 

    [Required] 
    [Display(Name = "Last Name")] 
    [MaxLength(25)] 
    public string LastName { get; set; } 

    [Required] 
    [Display(Name = "Gender")] 
    public string Gender { get; set; } 

Mein Controller:

public async Task<ActionResult> Register(RegisterViewModel model) 
    { 
    if (ModelState.IsValid) 
     { 


      var member = new MemberInformation 
      { 
       Id = 
        Guid.NewGuid().ToString() + DateTime.Now.Year +    DateTime.Now.Month + DateTime.Now.Day + 
        DateTime.Now.Hour, 
       FirstName = model.FirstName, 
       LastName = model.LastName, 
       MiddleName = model.MiddleName, 
       Gender = model.Gender, 
       ContactAddress = model.ContactAddress, 
       MarialStatus = model.MarialStatus, 
       Occupation = model.Occupation, 
       MobilePhone = model.MobilePhone, 
       RegistrationDate = DateTime.Now, 
     } 

meiner Sicht:

<div class="form-group"> 
    @Html.LabelFor(m => m.Gender, new {@class = "col-md-2 control-label",}) 
    <div class="col-md-10"> 
     @Html.LabelFor(m => m.Gender, "Male") 
     @Html.RadioButtonFor(Model => Model.Gender, "Male") 
     @Html.LabelFor(m => m.Gender, "Female") 
     @Html.RadioButtonFor(m => m.Gender, "Female") 
     </div> 
    </div> 
+0

Der Code, den Sie angezeigt haben, funktioniert einwandfrei und ordnungsgemäß gebunden (obwohl die Etiketten nicht als Beschriftungen fungieren und Sie haben ungültige HTML aufgrund doppelte ID-Attribute). Wenn es nicht bindend ist, dann ist es wegen anderem Code, den Sie uns nicht gezeigt haben –

Antwort

0

Ich vermute, Ihr Model => Model.Gender Ausdruck einige Verwirrung verursacht, weil Modell schon etwas bedeutet, in diesem Umfang.

LabelFor ist auch seltsam, wenn auf diese Weise verwendet wird, ein HTML-Label verwenden, um Dinge zu vereinfachen

<label>@Html.RadioButtonFor(m => m.Gender, "Male")Male</label> 
    <label>@Html.RadioButtonFor(m => m.Gender, "Female")Female</label> 
0

Wenn Sie Html.RadioButtonFor die gleiche Modell Eigenschaft zweimal schafft zwei Steuerelemente mit derselben ID. Da die Postbacks nur über Namen kümmert sich nicht IDs, müssen Sie die IDs außer Kraft zu setzen, wie unten:

@Html.RadioButtonFor(m => m.Gender, "Male", new {id = "GenderMale"}) 
@Html.RadioButtonFor(m => m.Gender, "Female", new { id = "GenderFemale" }) 

Diese Radiobuttons erstellt, die auf Geschlecht zuordnen, aber mit unterschiedlichen IDs.

Hinweis - Sie sollten das new { id = "Whatever" }-Bit einschließen, sonst werden die IDs erneut dupliziert.

+0

Es macht keinen Unterschied, ob Sie 'RadioButton()' oder 'RadioButtonFor() verwenden (und das stark typisierte' RadioButtonFor() 'ist immer bevorzugt) –

+0

Danke - aktualisierte Antwort zu reflektieren – Erresen

+0

Sie bearbeiten ist in Ordnung und das Hinzufügen der 'ID' ist gute Praxis, aber dies spricht nicht OP-Problem, warum es nicht verbindlich ist :) –