2016-12-12 17 views
0
の値に基づいてチェックされます

私はMVC 5プロジェクトを持っており、データベースレコードからラジオボタンを作成しています。MVCデフォルトでは、項目

これはうまく動作しますが、そこにチェックインしないようにしなければなりません。

以下に示すように、2つのラジオボタン作品の唯一の違いがある:新しい

@{ 
     foreach (var item in Model.PaintColor) 
     { 
      if (item.DefaultChoice == true) 
      { 
       @Html.RadioButtonFor(m => m.pledge.PaintColorId, 
             item.ColorId.ToString(), 
             new { @checked = "checked" } 
            ) 
      } 
      else 
      { 
       @Html.RadioButtonFor(m => m.pledge.PaintColorId, 
             item.ColorId.ToString() 
            ) 
      } 
      @Html.Label("Color" + item.ColorId, item.ColorDesc) 
     } 
     <br /> 
    } 
+1

あなたがいない(とすべきではない) '新しい' {@checked =「確認」}追加することが - 'RadioButtonFor()'メソッドは、プロパティの値に基づいて、あなたがに結合することを行います。 'pledge.PaintColorId'の値が' ColorId'の値と一致する場合、それは正しく選択されます(つまり、モデルバインディングの仕組みです)。そして、あなたは '.ToString()'を必要としません –

+0

スティーブン、正しい方向に私を向けるためにありがとう。私は今これについてもっとよく理解しています。 – DanO

+2

答えて

0

この定着に関するスティーブンからのコメントを見る{@checked =「チェック」}。基本的には、それがバインドされている値をチェックするので、必要でないとチェックされているように設定します。

ビューモデルを最初に作成するときには、フィールド値をデフォルト値に設定し、ラジオボタンがチェックされているように設定します。

foreach (var item in Model.PaintColor) 
{ 
    var idVal = string.Format("PaintColor_{0}", item.ColorId); 
    <div> 
     <label> 
      @Html.RadioButtonFor(m => m.pledge.PaintColorId, 
           item.ColorId, 
           new { id = string.Format("Rb{0}", idVal) } 
          ) 
      <span>@item.Description</span> 
     </label> 
関連する問題