MVC를 처음 사용합니다. 다음은 내보기에서 수행중인 작업의 요점입니다.Asp.Net Core 2.0 게시 후 RedirectToAction이 작동하지 않습니다.
할당 된 사용자 역할로 ID 사용자 표시. 페이지의
복제 사용자 역할 부분 :
는 최종 사용자가 다른 신원 사용자를 선택할 수 selectList의 되세요.
선택한 사용자의 현재 사용자 역할 표시 -이 부분보기에서 작업하고 있습니다.
사용자 복제 버튼을 클릭하고 현재 표시된 사용자에 대한 모든 사용자 역할을 제거한 다음 SelectList에서 선택된 사용자가 선택한 모든 역할에 추가합니다.
사용자보기 역할을 변경 한 후 (예 : 사용자 복제 링크를 클릭하여)보기의 일부가 새로 고쳐지지 않아 새 역할이 표시되지 않습니다. 내 ViewModel에서 UserRoles가됩니다. 새로 고치기 위해 CTRL + F5를 누르면 가장 최근의 역할이 표시됩니다. 다음 내가 가진 내보기에 내 스크립트에 다음
<a id="uxCloneUserButton" class="hidden">
<i class="glyphicon glyphicon-duplicate"></i> Clone User
</a>
그리고 :
$('#uxCloneUserButton').click(function() {
var selectedId = $('#uxEmployeeSelect').val();
var appUserId = $('#uxHiddenAppUserId').val();
var url = '@Url.Action("CloneUser", "ApplicationUser")';
//post id and username to controller action
$.post(url, { id: appUserId, cloneUserId: selectedId }, function (data) {
});
});
public ApplicationUser AppUser { get; set; }
public TblEmployee Employee { get; set; }
[Display(Name = "User Roles")]
public List<Tuple<string, string>> UserRoles { get; set; }
[Display(Name = "Available Roles")]
public List<Tuple<string, string>> AllRoles { get; set; }
[Display(Name = "Select Employee")]
public List<SelectListItem> EmployeeList { get; set; }
나는 내 페이지에 링크가 : 여기
내 뷰 모델입니다적절한 매개 변수를 사용하여 컨트롤러에서 동작을 얻었으므로 정상적으로 작동합니다. 제 컨트롤러에서 저는 이것을 가지고 있습니다 :
[HttpPost]
public async Task<IActionResult> CloneUser(string id, string cloneUserId)
{
ApplicationUser currentUser = await _userManager.FindByIdAsync(id);
ApplicationUser cloneUser = await _userManager.FindByIdAsync(cloneUserId);
//Remove currentUser from all current roles
var currentUserRoles = await _userManager.GetRolesAsync(currentUser);
if (currentUserRoles.Count > 0)
await _userManager.RemoveFromRolesAsync(currentUser, currentUserRoles.ToArray());
var cloneUserRoles = await _userManager.GetRolesAsync(cloneUser);
if (cloneUserRoles.Count > 0)
await _userManager.AddToRolesAsync(currentUser, cloneUserRoles.ToArray());
return RedirectToAction(nameof(Details), new { id = id });
}
귀하의 도움을 크게 받으실 수 있습니다. 클릭 한 후 새로 고침하기 위해 페이지의이 부분이 필요하며 모두 설정됩니다.
UPDATE 나는이 작업을 얻을 수 있었다,하지만 내 솔루션은 좋은 느낌하지 않습니다.
나는 나의 뷰 모델에 문자열을 추가 ://Redirect location
model.JSRedirectLocation = "/ApplicationUser/Details/" + model.AppUser.Id;
난 후 리디렉션 내 자바 스크립트를 변경 : 내가 내 VM의 모든 속성을 할당 내 세부 작업의 속성을 설정 public string JSRedirectLocation { get; set; }
게시물 : //post id and username to controller action
$.post(url, { id: appUserId, cloneUserId: selectedId }, function (data) {
window.location = '@Model.JSRedirectLocation';
});
누군가 내가 이걸 좀 더 깨끗한 방법으로해야하는지 말해 줄 수 있습니까? 그렇지? 이 솔루션은 내가보기에 불필요한 것으로 보입니다. 감사.
봐 partialview – DaniDev
반환에 당신은 아약스에서 게시하는, 예상대로 작동하지 않습니다 서버로 리디렉션합니다. 응답을받은 후 리디렉션하는 방식은 Ok입니다. – Fals
아약스의 전체 요점은 ** 같은 ** 페이지에 머무르는 것입니다. Ajax 호출은 결코 리다이렉트되지 않는다. 리디렉션하려면 ajax를 사용하지 마십시오! –