У меня есть табличное представление со списком ролей и ссылкой на действие для создания новых ролей.Ниже приведена моя страница role.cshtml
@model List<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>
@for (var i = 0; i < Model.Count(); i++)
{
<tr>
<td>
@Html.HiddenFor(m => m[i].Id)
@Html.HiddenFor(m => m[i].Name)
@Html.DisplayFor(m => m[i].Name)
</td>
<td>
@Html.EditorFor(m => m[i].Enabled, new { @checked = "checked" })
</td>
</tr>
}
</table>
<p><input type="submit" value="Save Changes" /></p>
<p style="color:green; font-size:12px;">@ViewBag.Message</p>
<p>
@Html.ActionLink("Create new Roles", "ViewCreateRoles", "Admin", null, new { id = "CreateRoles", @class = "appao-btn" })
</p>
}
</div>
</div>
</div>
Вызов кнопки «Создать новые роли» для метода ViewCreateRoles в контроллере администратора, о котором говорится ниже.
public ActionResult ViewCreateRoles()
{
return View("Roles/CreateRoles");
}
На странице CreateRoles.cshtml пользователь можетсоздать роль и отправить.при отправке он перенаправляет на действие CreateRoles в том же контроллере администратора.
@model ExpenCare.Models.CompanyRole
@{
ViewBag.Title = "CreateRoles";
}
<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 show active" id="list-Profile-Content" role="tabpanel" aria-labelledby="list-Profile">
@using (Html.BeginForm("CreateRoles", "Admin", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Enabled, "Enable", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<div class="checkbox">
@Html.EditorFor(model => model.Enabled)
@Html.ValidationMessageFor(model => model.Enabled, "", new { @class = "text-danger" })
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
</div>
</div>
</div>
</div>
Ниже приведен метод CreateRoles в контроллере администратора.
public ActionResult CreateRoles(CompanyRole role)
{
List<CompanyRole> roles;
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:1888/api/");
var responseTask = client.PostAsJsonAsync("CompanyRoles", role);
responseTask.Wait();
var result = responseTask.Result;
if (result.IsSuccessStatusCode)
{
var readTask = result.Content.ReadAsAsync<List<CompanyRole>>();
readTask.Wait();
roles = readTask.Result;
return View("Roles/Roles", model: roles);
}
else
{
ViewBag.Message = "not updated.";
return View("Roles/CreateRoles");
}
}
После создания роли при успешном выполнении пользователь перенаправляется на роли.cshtml, упомянутый выше, который показывает все роли.Моя проблема в том, что мой процесс добавления роли (перейдите на страницу ролей -> создать новую роль -> перенаправить на страницу ролей) работает нормально.Но сразу после перенаправления на страницу ролей я получаю «Исключение типа« System.Web.Http.HttpResponseException », возникшее в ExpenCare.dll, но не обработанное в коде пользователя», ошибка в моем веб-API, который вызывается в CreateRoles.когда я отлаживаю процесс, я вижу, что после перехода к методу «Dispose» административного контроллера метод «CreateRoles» снова вызывается и нулевые данные «CompanyRole role» передаются в веб-API.Я не знаю, как это называется снова.Я зарегистрировался в Google и попытался удалить все «#» из href и src моих страниц просмотра и макета, но он все еще не работает.Я не могу понять, почему один и тот же метод вызывается дважды без нажатия кнопки.