2016-08-09 25 views
0

問題は簡単ですが、モデルがリストである部分ビューがあります。リスト内の各項目のブール値パラメータにラジオボタンをバインドしようとしています。リスト内の1つの項目しか選択できないため、ラジオボタンが選択できます。モデルは、ラジオボタンにバインドされるべきブール値を除いて、他のすべてのパラメータに対して正しくバインドされています。以下のコードは、私の部分的な部分の切り詰められたバージョンです。RadioButton forモデルリストのforループ内

注 - 私のアプリケーションに複数のルーティングがあるため、 "BeginRouteForm"ヘルパーを使用する必要があります。コントローラにそれを送信するときのforeachが正しく私のモデルにバインドされていなかったかのように思える原因また、私は代わりに「foreachの」ループ「のために」を使用しています。:

@model TestListModel 
@using (Ajax.BeginRouteForm("Default", new { action = "Submit", controller = "TheController" }, new AjaxOptions { OnSuccess = "DoSomething" })) { 
<table> 
    <thead> 
     <tr> 
      <th></th> 
     </tr> 
    </thead> 
    <tbody> 
     @for (int i = 0; i < Model.List.Count(); i ++) { 
      @Html.HiddenFor(x => Model.List[i].Id) 
      <tr> 
       <td> 
      @{ 
       Dictionary<string, object> attributes = new Dictionary<string, object>(); 
       attributes.Add("Name", "test"); 
       attributes.Add("id", ""); 
       @Html.RadioButtonFor(x => x.SelectedId, Model.List[i].Id, attributes) 
      } 
      </tr> 
     } 
    </tbody> 
</table> 
    <input type="submit" value="Submit" style="margin: 10px 0px 0px 0px;" /> 
} 

UPDATE: [OK]をので、私は、私はラジオボタンをチェックボックスリストのようにモデリングしていました。バインディングが正しく機能していない理由を説明します。上記のコードを新しいコードに更新しました。IEnumerableの代わりに "selectedid"というモデルを使用しています。問題は、まだ動作していません。

+0

model-view-controllerタグはパターンについての質問です。 ASP.NET-MVCの実装には特定のタグがあります。 –

答えて

0

以下の解決方法を削除してください。

attributes.Add("Name", "test"); 
+0

'@ Html.RadioButtonFor(x => x.SelectedId、Model.List [i] .Id、new {id =" "})')にすることができます: –

+0

うまく動作します。 属性辞書を使用した理由は、私が質問を書いたときに変更した属性が追加されていたからです。 – Channafow