Я не могу выполнить функцию сохранения
Привет,
это мои ранние попытки с MVC. Я пытаюсь сделать функцию поиска по идентификатору пользователя, результатом поиска является список флажков со всеми разрешениями и отделами .те, к которым пользователь имеет доступ, по умолчанию проверяются.
Теперь моя проблема заключается в том, что когда я пытаюсь выбрать другие флажки, например, кнопка save снова переходит к функции index и никогда не переходит к функции saveData.
Я действительно заблудился и сильно изменил код. что же мне делать?
мой контроллер
public ActionResult Index(int? SearchId) { var MainVM = new MainViewModel(); var usr_Dep = db.TBL_User_Dep_Access.Where(x => x.UserID == SearchId).Select(x => x.Dep_ID).ToList(); var usr_Per = db.TBL_UserPermissions.Where(x => x.UserID == SearchId).Select(x => x.PermissionID).ToList(); if (SearchId != null) { List<UserDepartmentViewModel> Udep = db.TBL_Department.Select(i => new UserDepartmentViewModel { DepId = i.Department_ID, DepName = i.Department_Name, IsChecked = usr_Dep.Contains(i.Department_ID) }).ToList(); List<UserPermissionViewModel> Uper = db.TBL_Permissions.Select(i => new UserPermissionViewModel { PerId = i.PermissionID, PerName = i.PermissionName, IsChecked_ = usr_Per.Contains(i.PermissionID) }).ToList(); MainVM.UserDepartments = Udep; MainVM.UserPermissions = Uper; } return View(MainVM); } [HttpPost] [ValidateAntiForgeryToken] public ActionResult SaveData (MainViewModel mainView , int? SearchId) { db.TBL_UserPermissions.RemoveRange(db.TBL_UserPermissions.Where(x => x.UserID == SearchId)); db.TBL_User_Dep_Access.RemoveRange(db.TBL_User_Dep_Access.Where(x => x.UserID == SearchId)); foreach (var dep in mainView.UserDepartments) { if (dep.IsChecked) { TBL_User_Dep_Access tBL_User_Dep_ = new TBL_User_Dep_Access(); tBL_User_Dep_.UserID = SearchId; tBL_User_Dep_.Dep_ID = dep.DepId; tBL_User_Dep_.IsActive = true; db.TBL_User_Dep_Access.Add(tBL_User_Dep_); } } db.SaveChanges(); foreach (var per in mainView.UserPermissions) { if (per.IsChecked_) { TBL_UserPermissions tBL_UserPermissions = new TBL_UserPermissions(); tBL_UserPermissions.UserID = SearchId; tBL_UserPermissions.PermissionID = per.PerId; tBL_UserPermissions.IsActive = true; db.TBL_UserPermissions.Add(tBL_UserPermissions); } } db.SaveChanges(); return View(); }
Что я уже пробовал:
Я попытался указать действие на кнопку Сохранить, но все равно не работает так, как я хочу
@using (Html.BeginForm("Index", "Access")) { @Html.AntiForgeryToken() @Html.TextBox("SearchId", "", new { @id = "SearchId", @placeholder = "Search for...", @class = "form-control" }) <span class="input-group-btn"> <input class="btn btn-default" value="Search" type="submit">Go! /> </span> <ul> @if (Model.UserDepartments != null) { foreach (var item in Model.UserDepartments) { <li> <p> @Html.CheckBoxFor(modelItem => item.IsChecked) @Html.DisplayFor(modelItem => item.DepName) @Html.HiddenFor(modelItem => item.DepId) </p> </li> } } </ul> <ul> @if (Model.UserPermissions != null) { foreach (var item in Model.UserPermissions) { <li> <p> @Html.CheckBoxFor(modelItem => item.IsChecked_) @Html.DisplayFor(modelItem => item.PerName) @Html.HiddenFor(modelItem => item.PerId) </p> </li> } } </ul> <form action="~/Controllers/Access/SaveData"> <input type="submit" value="Save" class="btn btn-default" onclick="onClick" /> </form> } <script> function onClick() { location.href = '@Url.Action("SaveData", "Access")'; } </script>