3

(私はMVCの専門家ではありません、ただ言っています)<table>4つの列を含むをレンダリングする必要があります:

  • 名前
  • アクセスなし
  • ビューア
  • ファイル管理

    最後の3つはブール値であり、ラジオボタンにバインドする必要があり、このラジオボタンは行ごとにそれらをグループ化する必要があります。

    これをビューに表示するさまざまな方法を知っていますが、データがコントローラーに正しく送信されるようにするための最良の方法がわかりません。

    モデル:

    public class DetailModel 
    { 
        //this displays the user information
        public Users_SelectByUserId User { get; set; }
        //This is what builds the Table with the 4 columns.
        public List<UserMinistryRef_SelectByUserID> MinistryRef { get; set; }
    
    }
    

    -

    public class UserMinistryRef_SelectByUserID
    {
        public int UserRecordId { get; set; }
        public int MinistryId { get; set; }
        public bool Minadmin { get; set; }
        public bool Updater { get; set; }
        public bool Viewer { get; set; }
        public string mname { get; set; }
    }
    

    表示するための最良の方法は何ですか?また、これらをコントローラーに正しく入力する機能がありますか?私はMinistryRefコレクションを反復処理しようとしましたが、それではあまりうまくいきませんでした。コレクションをループしている間はRazorで動作させることができず、サードパーティのグリッドコントロールへのバインドは非常にうまくいきました。慌ただしい。

    正しい方向に進んでいるかどうかわかりません...

     @foreach (UserMinistryRef_SelectByUserID ministry in Model.MinistryRef)
                { 
                    <tr>
                        <td>@ministry.mname</td>
                        ***NOte the below @Helpers are not supposed to work, just trying to show what I'm hoping to achieve.
                        <td>
                            @Html.RadioButtonFor(Model.MinistryRef.MinAdmin == true)
                        </td>
                        <td>
                           Html.RadioButtonFor(Model.MinistryRef.Viewer == true)
                        </td>
                        <td>
                            Html.RadioButtonFor(Model.MinistryRef.Viewer == false && Model.MinistryRef.MinAdmin == false)
                        </td>
                    </tr>
                }           
    

    何かご意見は?

  • 4

    1 に答える 1

    1

    おそらく、次のように int 抽象化を使用してラジオ ボタン グループを制御できます。

    モデル

    public class UserMinistryRef_SelectByUserID
    {
     public int UserRecordId { get; set; }
     public int MinistryId { get; set; }
     public bool Minadmin { get; set; }
     public bool Updater { get; set; }
     public bool Viewer { get; set; }
     public string mname { get; set; }
     public int AccessRights { get; set; } //0 = viewer, 1 = updater, 2 = minadmin
    }
    

    見る

    @{ int count = 0; }
    @foreach (UserMinistryRef_SelectByUserID ministry in Model.MinistryRef)
    {
     <tr>
      <td>@ministry.mname</td>
      <td>
       <input name="MinistryRef[@(count)].AccessRights" type="radio" value="0" @if(ministry.Viewer){<text>checked="checked"</text>} /> 
      </td>
      <td>
       <input name="MinistryRef[@(count)].AccessRights" type="radio" value="1" @if(ministry.Updater){<text>checked="checked"</text>} /> 
      </td>
      <td>
       <input name="MinistryRef[@(count)].AccessRights" type="radio" value="2" @if(ministry.Minadmin){<text>checked="checked"</text>} /> 
      </td>
     </tr>
     count++;
    }
    

    コントローラ

    [HttpPost]
    public ActionResult action( DetailModel vm )
    {
     if (ModelState.IsValid)
     {
      foreach( var min in vm.MinistryRef )
      {
       switch( min.AccessRights )
       {
        case 0: /* Viewer */
        case 1: /* Updater */
        case 2: /* Minadmin */
       }
      }
     }
    
     return RedirectToAction("SomeHttpGet");
    }
    
    于 2012-11-20T00:19:36.000 に答える