2017-06-30 8 views
-1

ラジオボタンモデルデータをラジオボタンにバインドする際に問題があります。 レコードを挿入すると、選択したチェックボックスが無効になります。しかし、同じ挿入されたレコードを編集すると、モデルデータに等しいラジオボタンが選択されません。MVC 5 - モデルデータに基づくラジオボタンの選択(編集ページ)

私のデータベースにchar(1)値として挿入される3つの異なるラジオボタンがあります。

マイラジオボタンビュー:

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

挿入されるデータは 'M' または 'B'、 'S' です。 これは、作成ページでうまく動作しますが、編集ページでは選択されていません。

私はすでに、このように複数のものを試してみました:

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

しかし、これも動作しません。選択がラベルの「アクティブ」クラスによって決定されているため、チェックは機能していないようです。どのようにこれを動作させるための手掛かり?

+0

あなたの 'Insert'と' Edit'メソッドを教えてください – jamiedanq

答えて

1

あなたはcharとしてではなくstringとしてデータベース内の選択を保存しているように、あなたはcharの代わりのstring秒にobject valueのパラメータを変更してみてください?例えば

(シングル'なく"を倍増付):

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

EDIT:正しいものはPigeon_sizeのようなものでなければなりません(と、それが自動的に割り当てられますよう また、名前のHTML属性を削除します)

+0

良い点!それを変更しましたが、正しい '選択された値'を表示することには影響しません。 – Nicolas

+0

@Nicolasモデルがビューに正しく渡されていることを確認してください。 – GeorgeChond

+0

また 'name'のhtml属性を取り除いてください。正確なものは' Pigeon_size'のようなものでなければなりません。(自動的に割り当てられます) – GeorgeChond

関連する問題