Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用async调用方法并显示数据?当我试着去做的时候,它什么也做不了_C#_Ajax_Asp.net Mvc_Asynchronous_Async Await - Fatal编程技术网

C# 如何使用async调用方法并显示数据?当我试着去做的时候,它什么也做不了

C# 如何使用async调用方法并显示数据?当我试着去做的时候,它什么也做不了,c#,ajax,asp.net-mvc,asynchronous,async-await,C#,Ajax,Asp.net Mvc,Asynchronous,Async Await,我有一个方法,我在读一些关于一个人的细节。有点像大师级的细节。 该操作在popover中调用。我需要使调用成为一个异步的方法。 当我使用ajax参数async:true调用该方法时,它失败了。它什么也不做,不显示popover,也不在控制台中抛出任何异常。 这是我的代码: C# 当控制器中没有async、Task和Wait时,以及当async设置为false时,都可以工作。此外,如果我在控制器上保留async Task和Wait,并将ajax async设置为false,也可以工作。 如何解决这

我有一个方法,我在读一些关于一个人的细节。有点像大师级的细节。 该操作在popover中调用。我需要使调用成为一个异步的方法。 当我使用ajax参数async:true调用该方法时,它失败了。它什么也不做,不显示popover,也不在控制台中抛出任何异常。 这是我的代码: C#

当控制器中没有async、Task和Wait时,以及当async设置为false时,都可以工作。此外,如果我在控制器上保留async Task和Wait,并将ajax async设置为false,也可以工作。 如何解决这个问题

  • $.ajax()
    调用本质上是异步的,默认为true,因此不需要添加
    async:true

  • 使用
    数据:{id:id}
    ,并从
    url:
    中删除
    +id

  • JsonResult
    替换
    async Task
    (需要
    使用System.Web.Mvc

  • 在上面添加
    [HttpPost]
    公共JsonResult个人详细信息(int-id){…}

  • 使用
    var model=\u context.Person.Where(e=>e.Person==id&&e.Age>5.ToList()

  • Return
    returnjson(model)不返回视图

  • 完成了!您可以
    console.log(数据)
    在$.ajax.success函数中查看返回数据


  • 问题是我的代码逻辑。在调用调用ajax的方法之前,我已经设置了数据。

    如果调试控制器,它是否会命中控制器并运行所有代码?您在ajax方法中使用了
    'post'
    ,但我没有在C#controller方法上方看到
    [HttpPost]
    属性,除非您在示例中忽略了。我添加了httpost,它的作用是一样的。当我调试时,什么都没有发生。就像我从来没有点击过按钮一样。如果调试时没有点击控制器操作,请检查路由配置是否正确。打开浏览器网络选项卡,检查此特定请求的状态……但是如果我没有指定异步任务并在c#后端使用wait,那么异步读取是如何实现的呢?
    public async Task<ActionResult> PersonDetails(int id)
        {
            var model =  await _context.Person.Where(e => e.Person == id && e.Age > 5).ToListAsync();
            return View(model);
        }
    
    $.ajax({
                url: "/Home/PersonDetails/" + id,
                method: "post",
                async: true,
    
                //data: { id: id },
                success: function (data) {
                    set_data = data;
                },
                error: function (jqXHR, textStatus, errorThrown) {
    
                    console.log(jqXHR.statusText + textStatus + errorThrown);
                }
            });