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

我有一个表视图来显示公司的角色,其中包含用于选择角色的复选框。

https://img1.sycdn.imooc.com/657e55dd000117dc10270510.jpg

我想在模型中更新它。我的 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 和多行(批量)编辑



qq_遁去的一_1
浏览 50回答 1
1回答

胡说叔叔

将 Id 传递给您的 post 方法,控件名称应与模型属性名称匹配,以将值绑定到 post 模型参数。迭代这些控件来为每个控件创建唯一的 ID。在表单发布中,它将数据绑定到列表模型。看看我下面的代码。看法 :@using (Html.BeginForm("UpdateRoles","AdminRoles",FormMethod.Post))&nbsp;&nbsp;{&nbsp;&nbsp; @for (var i = 0; i < Model.Count(); i++)&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp; &nbsp; <tr>&nbsp; &nbsp; &nbsp; &nbsp;<td>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//to pass id to your post method&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@Html.HiddenFor(m => m[i].Id)&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@Html.DisplayFor(m => m[i].Name)&nbsp; &nbsp; &nbsp; &nbsp;</td>&nbsp; &nbsp; &nbsp; &nbsp;<td>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@Html.CheckBoxFor(m => m[i].IsChecked, new { })&nbsp; &nbsp; &nbsp; &nbsp;</td>&nbsp; &nbsp;</tr>&nbsp;}&nbsp;<input id="Submit" type="submit" value="submit" />&nbsp; &nbsp;}&nbsp;&nbsp;控制器 :&nbsp;[HttpPost]&nbsp;&nbsp;&nbsp;public ActionResult UpdateRoles(List<CompanyRole> model)&nbsp;{&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;//your logic&nbsp; &nbsp; &nbsp;return View();&nbsp;&nbsp;&nbsp;}模型 :public class CompanyRole {&nbsp; &nbsp; public int Id {get; set;}&nbsp; &nbsp; public string Name {get; set;}&nbsp; &nbsp; public bool IsChecked {get; set;}}
打开App,查看更多内容
随时随地看视频慕课网APP