ASP.Net Async MVC控制器函数导致Razor View Engine错误

我遇到了异步ASP.Net MVC控制器方法的问题。 我有一个控制器与一个视图返回到HttpGet'/主'路线。 它同步工作正常,但我想测试一些我的数据库功能,所以我将其更改为异步,并添加了一些代码,将模型写入我的数据库。

[RoutePrefix("home")]
public class HomeController : AsyncController
{
    [HttpGet]
    [Route("")]
    public async Task<ActionResult> IndexAsync()
    {
        // DEBUGGING - TEST WRITING USER TO DB
        var user = new UserModel(Guid.NewGuid().ToString(), "test", "test", "test@test.com", "tester");
        await user.WriteToDatabase();
        // DEBUG END

        return View("Index");
    }
}

如果我删除注释之间的界限,则视图返回就好了,但是,如果我不删除注释之间的界限,我会得到以下错误:

System.InvalidOperationException

未找到'索引'视图或其主视图,或者没有视图引擎支持搜索到的位置。 搜索了以下位置:

〜/浏览/首页/的Index.aspx

〜/浏览/首页/ Index.ascx

〜/查看/共享/的Index.aspx

〜/查看/共享/ Index.ascx

〜/浏览/首页/ Index.cshtml

〜/浏览/首页/ Index.vbhtml

〜/查看/共享/ Index.cshtml

〜/查看/共享/ Index.vbhtml

说明:HTTP 500.Error处理请求。

详细信息:非网络例外。 异常来源(应用程序或对象的名称):System.Web.Mvc。

我已经验证该视图存在于“〜/ Views / Home / Index.cshtml”路径中,并且因为该页面在同步版本中加载得很好,所以我知道该视图的语法是正确的。 数据库写入操作成功,但由于某种原因无法找到该视图。

我只是不知道为什么将该方法异步化会突然导致剃须刀视图引擎错误。 任何帮助表示赞赏。


AsyncController类提供与ASP.NET MVC 3的向后兼容性

虽然执行异步操作,但您应该将操作的名称保留为Index而不是IndexAsync 。 这样,你也可以juet做return View(); 与你目前正在做的事情相同。 所谓的异步命名约定不适用于操作名称。

你也不应该使用AsynController ,只需要你的控制器继承自可以处理异步操作的普通Controller

备注:ASP.NET MVC 4和更高版本中的Controller类支持异步模式。

[RoutePrefix("home")]
public class HomeController : Controller {
    //Matches GET home
    [HttpGet]
    [Route("")]
    public async Task<ActionResult> Index() {
        // DEBUGGING - TEST WRITING USER TO DB
        var user = new UserModel(Guid.NewGuid().ToString(), "test", "test", "test@test.com", "tester");
        await user.WriteToDatabase();
        // DEBUG END

        return View();
    }
}
链接地址: http://www.djcxy.com/p/59769.html

上一篇: ASP.Net Async MVC controller function causes Razor View Engine error

下一篇: How to pass a model through a MVC controller to a bootstrap modal