Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用实体模型的表updatein中的模型值为null_C#_Asp.net Mvc_Entity Framework_Razor - Fatal编程技术网

C# 使用实体模型的表updatein中的模型值为null

C# 使用实体模型的表updatein中的模型值为null,c#,asp.net-mvc,entity-framework,razor,C#,Asp.net Mvc,Entity Framework,Razor,我有一个表视图来显示公司的角色,其中包含选择角色的复选框。 我想在模型中更新它。My 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"> <

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

我想在模型中更新它。My 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);
    }
从角色操作检索的数据

public ActionResult Roles()
        {
            List<CompanyRole> roles = new List<CompanyRole>();
            HttpClient client = new HttpClient();           
                client.BaseAddress = new Uri("http://localhost:1888/api/");
                //HTTP GET
                var responseTask = client.GetAsync("CompanyRoles");
                responseTask.Wait();

                var result = responseTask.Result;
                if (result.IsSuccessStatusCode)
                {
                    var readTask = result.Content.ReadAsAsync<List<CompanyRole>>();
                    readTask.Wait();

                    roles = readTask.Result;
                }
                else //web api sent error response 
                {
                    //log response status here..

                    roles = null;

                    ModelState.AddModelError(string.Empty, "Server error. Please contact administrator.");
                }
            return View("Roles/Roles", model: roles);
        }

我试着对updateRole方法进行质疑,但是,该模型始终为空。我不知道是不是因为片面的观点。但当我单击“更新”时,它正在返回到操作方法。不可能更新吗?我也试过了

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

签出我下面的代码

视图:

@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" />   
}  


非常感谢。你救了我爸爸。请添加UpdateRoles、Admin、FormMethod.Post in@Html.BeginForm供任何人参考,不应删除
 [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;}
}