Wil*_*ins 5 c# asp.net-mvc routes asp.net-mvc-routing async-await
因此,我们有一个MVC项目,该项目已通过不同版本的MVC从1升级到4。
现在我们有一个控制器方法:
public async Task<ActionResult> IndexAsync()
Run Code Online (Sandbox Code Playgroud)
因此,如果我们转到http://somedomain.xyz/WhicheverController
或 http://somedomain.xyz/WhicheverController/Index
,则会收到404。
http://somedomain.xyz/WhicheverController/IndexAsync
路由到该方法就好了。
我们的路线出了什么问题?
我相信如果你从 AsyncController 派生你的控制器,你的例子会起作用。
public class MyController:AsyncController
{
public async Task<ActionResult> IndexAsync()
{
return View(); //view called "Index.cshtml", not "IndexAsync.cshtml"
}
}
Run Code Online (Sandbox Code Playgroud)
所以现在你可以在~/My/Index
没有Async
后缀的情况下点击,尽管Async
出现在控制器名称中。
这是以前MVC异步控制器方法的遗物,通常需要一个IndexComplete
方法才能工作,但是对于基于Task的异步控制器方法,XxxxComplete
不需要匹配方法,但Async
遵守约定。
的实际实现AsyncController
相当稀疏:
public abstract class AsyncController : Controller
{
}
Run Code Online (Sandbox Code Playgroud)
所以在 MVC 堆栈中的某个地方,测试了控制器的类型,并开启了特殊的路由魔法。
归档时间: |
|
查看次数: |
3176 次 |
最近记录: |