ファイルをダウンロードした後のリダイレクト方法は次のとおりです。 主なロジックは、ファイルがダウンロードされるまでリダイレクトを待機することです。 これを行うには、サーバー側の応答が計算され、サーバー側の応答時間+一部のオフセットを使用してリダイレクトが遅延されます。
サーバー側のコントローラコード:
[HttpPost]
public ActionResult GetTemplate()
{
return Json(new {Url = Url.Action("ReturnTemplate") });
}
[HttpGet]
public ActionResult ReturnTemplate()
{
FileResult fileResult = // your file path ;
return fileResult;
}
クライアント側コード:
<div id="btnGen" align="right"><button class="main-button" id="generateTemplate" type="Submit"></div>
Javascriptを:
$("#generateTemplate").click(function() {
var startTime = (new Date()).getTime(), endTime;
$.ajax({
url: '@Url.Action("GetTemplate", "Controller")',
type: 'POST',
traditional: true,
dataType: "json",
contentType: "application/json",
cache: false,
data: JSON.stringify(),
success: function (result) {
endTime = (new Date()).getTime();
var serverResponseTime = endTime - startTime + 500;
setInterval(function() { Back() }, serverResponseTime);
window.location = result.Url;
}
});
});
function Back() {
window.location = '@Url.Action("Index","Controller")';
}