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 一起工作,并且绑定到第 3 方网格控件只是结果相当忙碌。

    我不确定我是否走在正确的轨道上......

     @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 回答