如何从视图中调用异步方法?

How to call an asynchronous method from a view?

我在具有 id 参数的控制器中有一个异步方法。在我看来,我想要一个按钮,当单击它时,它会将 @document.SubmissionId 变量传递给函数并执行它。我怎样才能做到这一点?这是我目前所拥有的:

控制器

private async Task<ActionResult> onPostSaveImage(string id){}

查看

<input type="button" value="Send Images" class="btn btn-xs btn-outline-primary" onclick="location.href='@Url.Action("onPostSaveImage", "ICRDocumentPending")?id=' + @document.SubmissionId" />

仅使用 async 签署一个方法不足以在从视图调用时异步工作。有必要从 System.Web.Mvc.AsyncController 派生您的控制器 class,它实现了 IAsyncController 接口。代码将变成如下所示:

public class ICRDocumentPendingController : AsyncController
{
    public async Task<ActionResult> onPostSaveImage(string id)
    {           
        return await Task<ActionResult>.Factory.StartNew(() =>
        {
            /*  some code */
            //...

            return View("ViewName", (object)id); 
         });
     }
     //...
}

查看代码:

<input type="button" value="Send Images" 
       class="btn btn-xs btn-outline-primary"
       onclick="location.href='@Url.Action("onPostSaveImage", "ICRDocumentPending", new { id = document.SubmissionId }))'" />