我正在学习MVC5中的Async / Await。我创建了这个演示应用程序,但我的控制器操作方法没有被解雇。它给出了“资源无法找到”。错误。这是代码。
_Layout.cshtml view
@Html.ActionLink("ASYNC", "GetNames", "Async")
GetNames.cshtml视图
@Html.ActionLink("Click Me", "GetFirstName", "Async", null, new{@class = "btn btn-primary" })
@if (ViewBag.FName != null)
{
<p>
<label>@ViewBag.FName </label>
</p>
}
在AsyncController.cs文件中
public ActionResult GetNames()
{
return View();
}
[HttpPost]
public async Task<ActionResult> GetFirstName()
{
var r = await GetFirstNameFromDB();
ViewBag.FName = r;
return View("GetNames");
}
public async Task<string> GetFirstNameFromDB()
{
try
{
var res = await Task.Run(() =>
{
Thread.Sleep(3000);
return "TestFName";
});
return res;
}
catch (Exception)
{
return "Error in getting FirstName";
}
}
现在,每当我点击操作链接按钮调用GetFirstName
时,都会显示The resource cannot be found.
错误。我不确定它是否与async
或其他内容相关。
答案 0 :(得分:6)
您已定义app.run(['$rootScope', '$route', '$templateCache', function ($rootScope, $route, $templateCache) {
$rootScope.changeRoute = function(){
var currentPageTemplate = $route.current.templateUrl;
$templateCache.remove(currentPageTemplate);
$route.reload();
};
}]);
,当您点击它时,它会执行GET请求。
控制器的方法ActionLink
定义为GetFirstName
。将此更改为HttpPost
将确保该操作可用于GET请求。