ビュー chtml に ajax 呼び出しがあり、コントローラーで async メソッドを呼び出しています。問題は、コントローラ メソッドがリターンを行っても、結果が返されないことです。そのため、ブラウザーでは応答を待ち続け、ajax の成功または完了メソッドは呼び出されません。同期的に行うと機能します。mvc 4、.net 4.5 を使用しています。
私の見解では、次の ajax があります。
$.ajax({
type: "POST",
url: '@Url.Action("PopulateCertificatesViewModel")',
data: data,
success: function(certificatesViewModel) {
alert('success');
//do stuff with the response data...
},
complete: function() {
alert('complete');
});
私のコントローラーには、次のメソッドがあります。
[HttpPost]
public async Task<JsonResult> PopulateCertificatesViewModel(int orderId)
{
var service = getservice();
await Task.Run(() =>
{
response = service.getData();
});
return Json(response);
}