ASP.NET MVC 로딩 진행 표시 표시기
-
08-07-2019 - |
문제
프로세스를 실행하고 일부보기 데이터를 설정 한 다음이 데이터의 결과를보기에서 사용자에게 반환하는 MVC 컨트롤러가 있습니다. 프로세스 시간은 처리중인 데이터의 양에 따라 다릅니다. 프로세스가 실행중인 동안 뷰 내에 애니메이션 .gif를 표시하는 좋은 방법이 필요하며, 사용자에게 무슨 일이 일어나고 있음을 알 수 있습니다.
나는 다양한 Ajax 방법과 부분적 견해를 보았지만 여전히이를 달성하는 좋은 방법을 찾을 수는 없습니다. 내가 할 수 있었던 것은이 애니메이션 .gif를 표시하는 OnactionExecuting 이벤트에서보기 또는 부분보기를 반환하는 ActionFilter가있는 것이었고, 컨트롤러가 프로세스를 완료하고 실제보기로보기 또는 부분보기를 반환하면 데이터가 표시 될 수 있습니다.
또한 jQuery가 컨트롤러 동작을 백그라운드에서 호출 한 다음보기를 렌더링하는 멋진 비동기 방법을 제공 할 수있는 것 같습니다. 모든 도움이 감사하겠습니다.
해결책
컨트롤러에서 :
public JsonResult GetSomething(int id)
{
return Json(service.GetSomething(id));
}
보기 (JavaScript, jQuery 사용)에서 :
$('#someLink').click(function()
{
var action = '<%=Html.ResolveUrl("~/MyController.mvc/GetSomething/")%>' + $('#someId').val() + '?x=' + new Date().getTime();
$('#loading').show()
$.getJSON(action, null, function(something)
{
do stuff with something
$('#loading').hide()
});
});
이것은 행동 후 'ID'가 오는 경로를 가정합니다. 행동의 'X'매개 변수는 IE에서 공격적인 캐싱을 물리 치는 것입니다.
보기 (마크 업)에서 :
<img id="loading" src="images/ajax-loader.gif" alt=""/>
<!-- use a css stlye to make display:none -->
로더 gif를 얻으십시오 여기.
또한 JSON과 함께 할 필요는 없습니다. 원하는 경우 컨트롤러 작업에서 HTML 또는 XML과 같은 다른 것들을 가져올 수 있습니다.
제휴하지 않습니다 StackOverflow