C# 使用实体模型的表updatein中的模型值为null
我有一个表视图来显示公司的角色,其中包含选择角色的复选框。 我想在模型中更新它。My Roles.cshtml页面如下所示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"> <
@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;}
}