为了账号安全,请及时绑定邮箱和手机立即绑定

使用实体模型在 Razor 中的表更新中模型值为空

使用实体模型在 Razor 中的表更新中模型值为空

C#
qq_遁去的一_1 2023-12-17 09:58:17
我有一个表视图来显示公司的角色,其中包含用于选择角色的复选框。我想在模型中更新它。我的 Roles.cshtml 页面如下,@model IEnumerable<ExpenCare.Models.CompanyRole><div class="row">    @Html.Partial("_RightSidePane")    <div class="col-10 col-sm-8 col-xs-8 col-md-10">        <div class="tab-content" id="nav-tabContent">            <div class="tab-pane fade" id="list-Roles-Content" role="tabpanel" aria-labelledby="list-Roles"></div>            @using (@Html.BeginForm("UpdateRoles", "Admin", FormMethod.Post))            {            <table class="table">                    <tr>                        <th>                            Name                        </th>                        <th>                            Enable                        </th>                    </tr>                    @foreach (var item in Model)                    {                        <tr>                            <td>                                @Html.DisplayFor(m => item.Name)                            </td>                            <td>                                @Html.EditorFor(m => item.IsCheked, new { @checked = "checked" })                            </td>                        </tr>                    }                </table>                <p><input type="submit" value="Save Changes" /></p>                <p style="color:green; font-size:12px;">@ViewBag.Message</p>            }        </div>    </div></div>我的 UpdateRoles 操作如下,[HttpPost]        public ActionResult UpdateRoles(List<CompanyRole> model)        {            if (ModelState.IsValid)            {                foreach(var i in model)                {                    var id = i.Id;                    var role = i.Name;                }            }            ViewBag.Message = "Successfully updated.";            return View("Roles/Roles", model: model);    }从角色操作检索的数据。我尝试调试 updateRole 方法,但是模型始终为空。不知道是不是因为片面的看法。但当我单击更新时,它返回到操作方法。是不是不能更新了?我也尝试了MVC 5、EF 6 和多行(批量)编辑。
查看完整描述

1 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

将 Id 传递给您的 post 方法,控件名称应与模型属性名称匹配,以将值绑定到 post 模型参数。迭代这些控件来为每个控件创建唯一的 ID。在表单发布中,它将数据绑定到列表模型。


看看我下面的代码。


看法 :


@using (Html.BeginForm("UpdateRoles","AdminRoles",FormMethod.Post))  

  @for (var i = 0; i < Model.Count(); i++)  

  { 

    <tr>

       <td>

           //to pass id to your post method

           @Html.HiddenFor(m => m[i].Id) 

           @Html.DisplayFor(m => m[i].Name)

       </td>

       <td>

           @Html.CheckBoxFor(m => m[i].IsChecked, new { })

       </td>

   </tr>

 }

 <input id="Submit" type="submit" value="submit" />   

}  


控制器 :


 [HttpPost]  

 public ActionResult UpdateRoles(List<CompanyRole> model)

 {  

     //your logic

     return View();  

 }

模型 :


public class CompanyRole {

    public int Id {get; set;}

    public string Name {get; set;}

    public bool IsChecked {get; set;}

}


查看完整回答
反对 回复 2023-12-17
  • 1 回答
  • 0 关注
  • 40 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信