2017-06-30 2 views
-1

Ich habe ein Problem mit dem Binden meiner Radiobutton-Modelldaten an meine Radiobuttons. Wenn ich einen Datensatz einfüge, wird das ausgewählte Kontrollkästchen aktiviert. Wenn ich jedoch denselben eingefügten Datensatz bearbeite, wird der Radiobutton, der dem Modelldatenwert entspricht, nicht ausgewählt.MVC 5 - Return Radiobutton-Auswahl basierend auf Modelldaten (auf der Bearbeitungsseite)

Ich habe 3 verschiedene Radio-Buttons, die als char (1) -Werte in meine Datenbank eingefügt werden.

My RadioButton- Ansicht:

@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 

    <div class="form-horizontal"> 



     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
     @Html.HiddenFor(model => model.Pigeon.pigeonid) 


     @{ 

      var _Small = Model.Pigeon.size + "_Small"; 
      var _Medium = Model.Pigeon.size + "_Medium"; 
      var _Big = Model.Pigeon.size + "_Big"; 

     } 


     <div class="form-group"> 
      @Html.LabelFor(m => m.Pigeon.size, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       <div class="btn-group" data-toggle="buttons"> 
        <label class="btn btn-primary"> 
         @Html.RadioButtonFor(m => m.Pigeon.size, "s", new { @id = _Small, name = "size" }) Small 
        </label> 
        <label class="btn btn-primary"> 
         @Html.RadioButtonFor(m => m.Pigeon.size, "m", new { @id = _Medium, name = "size" }) Medium 
        </label> 
        <label class="btn btn-primary"> 
         @Html.RadioButtonFor(m => m.Pigeon.size, "b", new { @id = _Big, name = "size" }) Big 
        </label> 

       </div> 
      </div> 
     </div> 


    </div> 
} 

Die Daten, die eingefügt wird, ist 'S', 'M' oder 'B'. Dies funktioniert gut für die Erstellungsseite, aber die Bearbeitungsseite gibt die Auswahl nicht wieder.

@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 

    <div class="form-horizontal"> 



     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
     @Html.HiddenFor(model => model.Pigeon.pigeonid) 


     <div class="form-group"> 
      @Html.LabelFor(m => m.Pigeon.size, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       <div class="btn-group" data-toggle="buttons"> 
        <label class="btn btn-primary"> 
         @Html.RadioButtonFor(m => m.Pigeon.size, "s", Model.Pigeon.size == "s" ? new { @checked = "checked" } : null) Small 
        </label> 
        <label class="btn btn-primary"> 
         @Html.RadioButtonFor(m => m.Pigeon.size, "m", Model.Pigeon.size == "m" ? new { @checked = "checked" } : null) Medium 
        </label> 
        <label class="btn btn-primary"> 
         @Html.RadioButtonFor(m => m.Pigeon.size, "b", Model.Pigeon.size == "b" ? new { @checked = "checked" } : null) Big 
        </label> 

       </div> 
      </div> 
     </div> 

    </div> 
} 

Aber das ist auch nicht:

Ich habe schon mehrere Dinge wie diese versucht. Checked scheint nicht zu funktionieren, da die Auswahl durch die Klasse "Active" auf dem Etikett bestimmt wird. Irgendeine Ahnung, wie man das zur Arbeit bringt?

+0

zeigen Sie uns Ihre 'Einfügen' und' Edit' Methoden – jamiedanq

Antwort

1

Wie Sie die Auswahl als char und nicht als string in der Datenbank speichern, können Sie versuchen, die Parameter zu char s s object value Wechsel statt string s? (Mit einer einzigen ' und nicht doppelt ")

Zum Beispiel:

@Html.RadioButtonFor(m => m.Pigeon.size, 's', new { @id = _Small }) Small 

EDIT: Entfernen Sie auch den Namen HTML-Attribut als die richtig etwas wie Pigeon_size sein sollte (und es wird automatisch zugeordnet wird)

+0

Guter Punkt! Es wurde geändert, hat aber keine Auswirkung auf den korrekten 'ausgewählten Wert'. – Nicolas

+0

@Nicolas Sind Sie sicher, dass Ihr Modell korrekt an die View übergeben wurde? – GeorgeChond

+0

Entfernen Sie auch das 'name' html-Attribut, da das richtige' Pigeon_size' sein sollte (und es automatisch zugewiesen wird) – GeorgeChond

Verwandte Themen