MVC 6中缺少AsyncController

10

我正在尝试在异步IActionResult方法中使用id参数,但它传递的值为空。

如果我继承Controller并使用 -

public IActionResult Index(string id)

没有问题。但是当我使用 -> 时

    public async Task<IActionResult> Index(string id)

(这就是我需要的) id参数始终为null。 我正在尝试从AsyncController继承来做到这一点,但是我在使用以下内容时遇到了问题:

        "Microsoft.AspNet.Mvc": "6.0.0-beta1"

有人知道针对这个问题的解决方法吗?谢谢!


id 参数的绑定不应该取决于你是否返回任务... 你能分享一下你的路由长什么样子,以及请求 URL 长什么样子吗? - Kiran
1个回答

23

MVC 6在ASP.NET vNext中没有AsyncController基类。在MVC 6中的所有控制器(实际上还包括MVC 4和5)都是异步的。

using System;
using System.Threading.Tasks;
using Microsoft.AspNet.Mvc;

namespace WebApplication49.Controllers
{
    public class TestController : Controller
    {
        public async Task<IActionResult> Index(string id)
        {
            await Task.Delay(1000);
            return Content("I found ID: " + id);
        }
    }
}

并导航到:

http://localhost:49479/test/index/123

然后正确地获得了这个结果:

I found ID: 123

1
谢谢提供信息,这有效了。我还有另一个问题导致了这个问题。 - user2095880
是否有文档说明MVC 4、5、6中的所有控制器都是异步的? - KevinBui

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接