У меня есть табличное представление для отображения ролей компании, которое содержит флажок для выбора ролей.
Я хочу обновить это в модели.Моя страница 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, но модель всегда пуста.Я не знаю, если это из-за частичных взглядов.Но когда я нажимаю обновить, он возвращается к методу действия.Не возможно ли обновить?Я также попробовал MVC 5, EF 6 и Multirow (пакетное) редактирование .